在C ++ 11中使用正则表达式lookbehinds

时间:2013-01-26 16:02:45

标签: c++ regex c++11

为什么我不能在C ++ 11中使用lookbehinds? Lookahead工作正常。

std::regex e("(?<=a)b");

这将引发以下异常:

The expression contained mismatched ( and ).

这不会抛出任何异常:

std::regex e("a(?=b)");

我错过了什么?

1 个答案:

答案 0 :(得分:18)

C ++ 11 <regex>使用ECMAScript的(ECMA-262)正则表达式语法,因此不会具有后瞻性(C ++ 11支持的其他正则表达式也不会没有后顾之处。

如果您的使用案例需要使用后视,您可以考虑改用Boost.Regex