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

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

            }              

        }


交互式爱情
浏览 175回答 2
2回答

守候你守候我

问题出在您的正则表达式中。^断言行首和$行尾。只需将其替换为@"\d+"它应该可以工作。您可以选择使用new Regex(string.Format("^Log_{0}.txt$", @"\d+"));以确保没有匹配 asdffff_Log_13255.txt.temp 等文件。

MMTTMM

你忘了加上+量词吧?+ 量词 - 匹配一次到无限次,尽可能多次,根据需要回馈(贪婪)var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^\d+$"));
打开App,查看更多内容
随时随地看视频慕课网APP