2016-06-07 66 views
0

線的N多我有這樣如何匹配正則表達式

Notes: 
He jumped the sea-horse 
but it looked ropey 
Then he left 

但有時一些文本的這樣

Notes: 




Clay is only green 
When it is seen 

我需要「注意事項」後,捕捉到4行文字只因此,輸出應爲

Notes: 
He jumped the sea-horse 
but it looked ropey 
Then he left 

和用於第二示例

Notes: 

我試圖匹配換行符,但它只有正則表達式後剩下的匹配

Notes:.*\n{4} 

如何創建一個正則表達式,讓我重複匹配整條生產線和一個換行符四次? (這是一個非捕獲組?)你是接近

+2

爲什麼正則表達式? Java有其他選項 – Amit

+1

而不是將整個文件讀入字符串並匹配換行符,只需一次讀取一行。當您看到「注意事項」時,只需閱讀適當數量的附加行。 – azurefrog

+0

我想問題是爲什麼不是正則表達式? –

回答

1

- 在Notes:.*\n{4}{4}只給換行結合,所以它會只捕獲「指出:」其次是什麼,其次是4個的空行。

你正在尋找的東西像Notes:\n((?:.*\n){1,4})

+1

因此,我想使用捕獲組來獲得。* \ n是括號作爲捕獲組給我所有四行? –

+0

啊,你是對的,捕捉行爲不是你想要的。更新了有外部捕獲組的響應,以及最多4個內部非捕獲組。 –

+0

太好了。非常感謝 –

2

如果我理解正確的問題,你想捕捉的前4行,如果他們不是空白的不關心,它可能是最好不要使用正則表達式完全可以在新行上分割文本,這樣你就可以得到一串字符串。類似這樣的:

string[] lines = text.split("\\r") 

然後簡單地櫻桃挑選數組的前四個元素。