[英]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$"
這個正則表達式將得到你想要的:
\\([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.