簡體   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