0

我正在尝试在嵌套在块中的 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”
为什么我不能在前瞻中使用重复?请帮帮我,我完全迷路了;(

谢谢你

4

2 回答 2

2

我找到了答案。本手册中没有

向后看

(?<=pattern) 消耗零个字符,仅当模式可以与当前位置之前的字符匹配时(模式必须是固定长度)。

于 2009-02-12T05:39:05.700 回答
0

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

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

于 2009-02-12T03:52:33.210 回答