2015-10-06 40 views
1

我正在使用正則表達式來查找文本文件中的數據。我有一堆文本文件,形狀如下:Regex.Matches找到不匹配的字符串時如何停止

aaa 
aaa 
aaa 

我的真實數據比較複雜,但這不是我的問題所在。現在,說我有一個正則表達式可以找到aaa。如果使用方法Regex.Matches,我可以在方法的返回值上使用foreach循環來獲取字符串aaa的每個實例,並對其執行一些操作。但有時數據無法正常存儲(存儲在文本文件中的數據的樂趣):

aaa 
bbb 
aaa 

現在,Regex.Matches會給我AAA的兩個實例做的東西用。但是因爲這個文本文件裏面還有bbb,其餘的數據也不能被信任,所以我想跳過這個文本文件。

我正在尋找一種在此文本文件上使用正則表達式的方法,以及一種正則表達式檢測方法,一旦正則表達式找到字符串中與任何方式都不匹配的字符。真正的正則表達式是相當大的,所以複製粘貼它,並說「尋找任何不匹配這個正則表達式」是不理想的。

回答

3

你的問題是相當廣泛的,但下面的方法應該在許多情況下,制定出:

\G是,在之前的比賽結束匹配的錨,所以你可以用它來馬上確保兩場比賽遵循對方。對待它就像你會在逐行正則表達式中使用^,或者將其包裝在\G(?: ... )中。你很可能不得不進行小的調整(例如,如果你想忽略匹配之間的空格,你可以用\G\s*(?: ... )來代替正則表達式)。

您還需要確定你確實讀了最後一場比賽的整個輸入,所以最後給出的Match對象,檢查其Index + Length輸入長度+/-忽略任何內容,如空格匹配(或在解決這個問題模式本身,例如,以空格結尾\s*)。

+0

謝謝!我不再工作了,但明天我會試試這個。 – ohyeah

相關問題