2015-11-22 35 views
1

我無法捕捉所有組在下面的降價文本串/盡頭的休息:的Javascript多的正則表達式前瞻或字符串

### AAA 
text for group AAA 

### BBB 
text for group BBB 

### CCC 
text for group CCC 

我目前使用的正則表達式是:

/(^###\s[\s\S]*?(?=^###\s))/gm 

它使用積極的向前知道何時切斷每個組。因此,它總是無法捕獲最後一組(沒有預見匹配)。

換行符會不一致,所以我不能依賴這些,而javascript正則表達式沒有\ Z(我相信它是「非常結束的字符串」在其他語言,而不是$這是行的末尾)。

如何捕獲所有組?

+2

你怎麼想捕捉?請告訴我們輸入和輸出預計請 –

回答

0

您可以使用負向前瞻而非正向:組的內容將是不在###字符串開頭的每個字符。

^###\s((?!###)[\s\S])*

試試它regex101

+0

完美的作品!謝謝! – Nick

0

看看JS是否有\z構造。
如果不是,您可以在您現有的預測範圍內使用而不是個字符(EOS)
(?![\S\s])

(^###[^\S\r\n][\S\s]*?(?=^###[^\S\r\n]|(?![\S\s])))

格式化:

(       # (1 start) 
    ^\#\#\# [^\S\r\n] 
     [\S\s]*? 
     (?= 
     ^\#\#\# [^\S\r\n] 
     | (?! [\S\s]) 
    ) 
)        # (1 end) 
相關問題