为了账号安全,请及时绑定邮箱和手机立即绑定

使用 String.Format 创建正则表达式

使用 String.Format 创建正则表达式

C#
交互式爱情 2022-10-23 13:39:57
本质上,我有一个用于插值的字符串:Log_{0}.txt并且{0}在不同的过程中被替换为整数。所以结果可能类似于Log_123.txtor Log_53623432.txt。我正在尝试使用string.Format()并替换{0}为检查数字的正则表达式。最终,我也希望能够提取这些数字。我已经尝试过类似这样的一些不同的变化,但我没有任何运气:var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^\d$"));此外,这是检查格式的代码:        var fileNameFormat = new Regex(string.Format("Log_{0}.txt", @"^\d+$"));        var existingFiles = Directory.GetFiles("c:\\projects\\something");        foreach(var file in existingFiles)        {            var fileName = Path.GetFileName(file);            if(fileNameFormat.Match(fileName).Success)            {                // do something here            }                      }
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

问题出在您的正则表达式中。^断言行首和$行尾。只需将其替换为@"\d+"它应该可以工作。

您可以选择使用new Regex(string.Format("^Log_{0}.txt$", @"\d+"));以确保没有匹配 asdffff_Log_13255.txt.temp 等文件。


查看完整回答
反对 回复 2022-10-23
?
MMTTMM

TA贡献1869条经验 获得超4个赞

你忘了加上+量词吧?

+ 量词 - 匹配一次到无限次,尽可能多次,根据需要回馈(贪婪)

var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^\d+$"));


查看完整回答
反对 回复 2022-10-23
  • 2 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号