是不是可以在前瞻中使用'重复'来提升:正则表达式?

时间:2009-02-12 03:47:54

标签: c++ regex boost lookahead

我正在尝试在嵌套在块中的C ++代码中提取一些变量 例如,如果我有

        DEL_TYPE_NONE,
            DEL_TYPE_DONE,
    DEL_TYPE_WAIT,

我想匹配 “DEL_TYPE_NONE”
“DEL_TYPE_DONE”
“DEL_TYPE_WAIT”

我制作了这样的模式,
std :: string pat(“(?< = ^ [\\ t]?)[A-Z0-9 _] +(?=,$)”);

但是当编译器想要阅读我的模式时,我会不断收到错误消息 我不明白但有问题吗?在\\ t 之后标记 如果我摆脱?标记然后它编译并只找到“DEL_TYPE_WAIT”
为什么我不能在Lookahead中使用Repeats?请帮助我,我完全迷失在这里;(

谢谢

2 个答案:

答案 0 :(得分:2)

我找到了答案。来自此manual

  

回顾后

     

(?< = pattern)消耗零个字符,   只有模式可以匹配   对抗前面的人物   当前位置(模式必须是   固定长度)。

答案 1 :(得分:0)

基于POSIX我会说你的正则表达式是“DEL_TYPE _([ND] ONE | WAIT)”,

这只是基于你上面列出的内容。我会说实际的问题是你双重逃避t;你应该做[\ t \ s] *因为可能没有零个或一个标签/空格。