Dor*_*mer 2 c# regex string-interpolation
从本质上讲,我有一个用于插值的字符串:Log_{0}.txt并且{0}在不同的过程中将其替换为整数。因此结果可能类似于Log_123.txt或Log_53623432.txt。
我正在尝试使用检查数字的正则表达式string.Format()替换{0}。最终,我也希望能够提取这些数字。
我已经尝试过一些类似的变体,但是我没有任何运气:
var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^\d$"));
Run Code Online (Sandbox Code Playgroud)
另外,这是检查格式的代码:
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
}
}
Run Code Online (Sandbox Code Playgroud)
问题出在您的正则表达式中。^断言行的开头和行的$结尾。只需将其替换为它,@"\d+"它应该可以工作。
(可选)您可以new Regex(string.Format("^Log_{0}.txt$", @"\d+"));用来确保没有匹配诸如asdffff_Log_13255.txt.temp之类的文件。