我正在尝试在嵌套在块中的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?请帮助我,我完全迷失在这里;(
谢谢
答案 0 :(得分:2)
我找到了答案。来自此manual
的否回顾后
(?< = pattern)消耗零个字符, 只有模式可以匹配 对抗前面的人物 当前位置(模式必须是 固定长度)。
答案 1 :(得分:0)
基于POSIX我会说你的正则表达式是“DEL_TYPE _([ND] ONE | WAIT)”,
这只是基于你上面列出的内容。我会说实际的问题是你双重逃避t;你应该做[\ t \ s] *因为可能没有零个或一个标签/空格。