1
(或因此我認爲)...正則表達式導致段錯誤/堆棧溢出
我使用boost :: xpressive中爲我的正則表達式引擎解析的東西,我得到一個段錯誤。我懷疑遞歸和我的糟糕的正則表達式都是怪罪,因爲gdb顯示了超過300個堆棧幀。所以,這裏是我的(區分大小寫)的正則表達式,在Perl/Python的符號:
begin([^e]+)e((?:[^b]|b(?!egin))+)
,我期待與第一大寫文字匹配
beginHEADER HEREeFOLLOWED BY SOME LONG LONG TEXT THAT GOES UNTIL NEXTbegin
(HEADER這裏)在第一組和第二組中的第二個大寫文本。如果應該匹配組2的文本非常長,我總是會得到段錯誤。
爲什麼不應該這樣工作?
我會在左邊部分保留'[^ e] +',它可能會表現更好。 – Benoit 2012-03-05 09:35:47
謝謝,它現在有效。這種回溯的事情令人頭腦麻木。 – dsign 2012-03-05 09:35:53
另外,xpressive在發佈模式下編譯時效果會好很多(也許tail-recursion有幫助嗎?)。 – dsign 2012-03-05 09:47:45