(或者我认为)...
我使用 boost::xpressive 作为我的正则表达式引擎来解析一些东西,我得到一个段错误。我怀疑递归性和我糟糕的正则表达式是罪魁祸首,因为 gdb 显示了 300 多个堆栈帧。所以,这是我的(区分大小写的)正则表达式,用 perl/python 表示法:
begin([^e]+)e((?:[^b]|b(?!egin))+)
我希望匹配
beginHEADER HEREeFOLLOWED BY SOME LONG LONG TEXT THAT GOES UNTIL NEXTbegin
第一组中的第一个大写文本(HEADER HERE),第二组中的第二个大写文本。如果应该匹配第 2 组的文本很长,我总是会收到段错误。
为什么不应该这样做?