我正在尝试查找一些写入以“K.TIF”结尾的日志文件的文件名。
我试图找到:
20130629VGM180ZZ001001K.TIF
20130629VGM180ZZ001002K.TIF
等
由于我在正则表达式中很糟糕,我试过这个:
Regex.Match(line, @"([A-Z0-9]+){23}\.TIF", RegexOptions.IgnoreCase);
Regex.Match(line, @"(?<=\\)(.>)(?=K\.TIF){23}", RegexOptions.IgnoreCase);
第一个是可怕的,不执行并且给出不好的结果。
第二个实际上给出了在Z.TIF上结束的所有TIF,如果我将K \更改为Z.但是,它没有找到当前正则表达式的任何K.TIF.
答案 0 :(得分:1)
答案 1 :(得分:1)
这应该有效:
@"\w+K\.TIF$"
答案 2 :(得分:0)
这个正则表达式将得到你想要的东西:
\\([A-Z0-9]{22}K\.TIF)$
您不应该使用IgnoreCase
,因为您专门使正则表达式只匹配上限。
提取值将位于匹配组内,因此请使用:
string MatchedFileName = Regex.Match(line, @"[A-Z0-9]{22}K\.TIF$").Value;
(更新,感谢Tyler指出我没有正确阅读OP的问题)
(再次更新,因为它不需要在开始或捕获组中使用反斜杠)
答案 3 :(得分:0)
第一个正则表达式非常接近答案,但它有一个额外的'+'。我想你可以试试下面的代码。
Regex.Match(line, @"([A-Z0-9]){22}K\.TIF", RegexOptions.IgnoreCase);
答案 4 :(得分:0)
使用此正则表达式var res = Regex.Match(line, @"(?im)^.+k\.tif$";