看板 RegExp 關於我們 聯絡資訊
最近寫程式(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
lg31cm:能夠在look behind使用不定長度的Regex engine不多 12/17 00:35
lg31cm:你可能要確認一下 12/17 00:35
lg31cm:(?<=a\d{3}\s).* <--- 改成這樣如何? 12/17 00:38
os653:問題是題目不是這麼單純的,沒辦法確定實際數字 12/22 16:37
os653:目前是把字串抓出來以後自己再另外把頭尾部分砍掉 12/22 16:38
os653:只是這樣寫實在很醜,本來一行解決的東西要搞到十幾行 Q_Q 12/22 16:38
os653:話說回來,原來 The Regulator 是這麼強大的東西阿 ... 12/22 16:39