繁体   English   中英

c#中的正则表达式在日志中查找文件

[英]Regex in c# to find files in log

我正在尝试找到一些文件名,这些文件名被写入以“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。

这似乎对我有用:

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

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

这应该工作:

@"\w+K\.TIF$"

这个正则表达式将得到你想要的:

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

您不应该使用IgnoreCase因为您专门使正则表达式匹配上限。

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM