本质上,我有一个用于插值的字符串: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 等文件。

MMTTMM
TA贡献1869条经验 获得超4个赞
你忘了加上+
量词吧?
+ 量词 - 匹配一次到无限次,尽可能多次,根据需要回馈(贪婪)
var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^\d+$"));
- 2 回答
- 0 关注
- 174 浏览
添加回答
举报
0/150
提交
取消