作者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