Regex在c#中查找日志中的文件

本文关键字:文件 日志 查找 Regex | 更新日期: 2023-09-27 18:25:13

我正试图找到一些写入以"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。

Regex在c#中查找日志中的文件

这似乎对我有用:

^.*''('w*K.TIF)$

它搜索最后一个斜杠,然后捕获后面跟有K.TIF的单词字符。示例:http://www.regex101.com/r/nH6gV4

这应该有效:

@"'w+K'.TIF$"

第一个正则表达式非常接近答案,但它有一个额外的"+"。我想你可以试试下面的代码。

Regex.Match(line, @"([A-Z0-9]){22}K'.TIF", RegexOptions.IgnoreCase);

此正则表达式将得到您想要的:

''([A-Z0-9]{22}K'.TIF)$

您不应该使用IgnoreCase,因为您专门使正则表达式只匹配大写字母。

提取值将在匹配组中,因此使用:

string MatchedFileName = Regex.Match(line, @"[A-Z0-9]{22}K'.TIF$").Value;

(更新,感谢Tyler指出我没有正确阅读OP的问题)

(再次更新,因为它不需要在开始或捕获组处使用反斜杠)

使用此正则表达式var res = Regex.Match(line, @"(?im)^.+k'.tif$";