2013-04-09 56 views
0

我一直在努力尋找答案。雖然我使用C++ boost正則表達式,但如果我只是有一個工作表達式,我可以適應它(儘管我會很樂意接受一個特定於提升的線索)。正則表達式多行搜索模式

我有以下示例文本:

---- 
this is a sample line -> various chars 
another sample line (again 'might have different chars] 
etc., etc. 
---- 
more data 
again anything in here. 
more lines of text -> etc 
etc. etc. 
---- 
maybe only one line 

和結尾的 「 - 」 是可選的。

我已經試過:

^-{4}\s(.*\s)*?(-{4})+ 

和變化,但我只讓我在第2組中的最後一行,而我想繼4的所有行 「 - 」第2組字符,除非它是以4''字符開始的另一行。

回答

0

量化捕獲組只捕獲最後一個實例。使該組不被捕獲,並將整個量化表達式包裝到捕獲組中。我不確定(-{4})+的用途是什麼。你可以代替的意思是這樣的:

^-{4}\s((?:.*\s)*?)(?=-{4}|\s*$) 
        ^^^^^^^^^^^^^ 

(?= ...)是一個超前的斷言。它斷言,在當前位置之後立即是-{4}或文本的結尾(在可能的空白之後)。

最後,你可能想使一個好辦法...

^-{4}\s+((?:.*\s+)*?)(?=-{4}|\s*$) 
    ^  ^ 

...萬一有你的文字之間的空行。

+0

完美;謝謝! – user2259541 2013-04-09 17:06:48

+0

@ user2259541 - 在編輯中做了一些額外的評論;再看看是否遇到任何問題。 – 2013-04-09 17:09:19

+0

您對正則表達式的結尾是正確的。非常感謝!至於空白線潛力,儘管我沒有看到這一點,但IIUC它不會受傷。大;謝謝! – user2259541 2013-04-09 19:16:39