2011-02-12 47 views
0

等給出的文字:正則表達式 - 匹配一次多行

XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX.XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX.XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. XXXXXXX. 

Boss: asdasdasdasd 
Date: XXX, XXXXXXXXX 

我想最後的3行匹配:

這裏就是我想,但它的失敗:

^Boss:.*$^Date:.*$ 

建議?由於

+4

爲什麼它必須用正則表達式來完成?只需換行就行了。 – 2011-02-12 00:38:24

回答

2

您可能需要跳過第一個X線......你也錨^可能是造成你不匹配。

嘗試

(?:.*[\r\n]*)*Boss:.*(?:.*[\r\n]*)Date:.* 
0

如果您的文件不是大小的在GB範圍

ruby -e 'a=File.read("file"); p a.split(/\n/)[-3..-1] ' 
2
^Boss:.*[\r\n]+Date:.*$ 

線錨,^$,都是零寬度斷言;他們斷言某些條件適用於不消費任何字符。

  • ^表示當前位置或者是輸入的開始位置,或者它緊接在行分隔符後面。
  • $裝置的當前位置或者是輸入的結束,或者它緊跟一個行分隔符。

但他們都沒有的消耗行分隔符,所以$^永遠無法比擬的。 [\r\n]+匹配(並消耗)一個或多個回車或換行符,因此它處理三種最常見的行分隔符類型:\r(較舊的Mac標準),\r\n(Windows /網絡標準)和\n(Unix/Linux/Mac OS X /幾乎一切)。