作者os653 (allstar)
看板RegExp
標題[問題] boost regex 在某些情況下會導致程式當掉
時間Mon Dec 15 17:06:59 2008
最近寫程式(C++)用到 boost regex
發現在某些表示式下,程式會當掉
但用 The Regulator 測試卻正常
題目為
取出 "A111 BBB" 這個字串中的 "BBB"
我將表示式寫成 (?<=a\d+\s).*
用 The Regulator 得到正確結果,用 boost regex 程式當掉
經過多次測試
發現問題似乎是出在那個 + 號
若把題目改成
取出 "A1 BBB" 這個字串中的 "BBB"
將表示式寫成 (?<=a\d\s).*
則用 The Regulator 和 boost regex 都會得到正確結果
個人推測
只要在 (?<= 與 ) 中間使用了不確定數值的東西,都會導致程式當掉
請問是我的表示式有問題,還是 boost regex 有問題?
有沒有解決的方法?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.14.92
1F:→ lg31cm:能夠在look behind使用不定長度的Regex engine不多 12/17 00:35
2F:→ lg31cm:你可能要確認一下 12/17 00:35
3F:推 lg31cm:(?<=a\d{3}\s).* <--- 改成這樣如何? 12/17 00:38
4F:→ os653:問題是題目不是這麼單純的,沒辦法確定實際數字 12/22 16:37
5F:→ os653:目前是把字串抓出來以後自己再另外把頭尾部分砍掉 12/22 16:38
6F:→ os653:只是這樣寫實在很醜,本來一行解決的東西要搞到十幾行 Q_Q 12/22 16:38
7F:→ os653:話說回來,原來 The Regulator 是這麼強大的東西阿 ... 12/22 16:39