为什么我不能在C ++ 11中使用lookbehinds? Lookahead工作正常。
std::regex e("(?<=a)b");
这将引发以下异常:
The expression contained mismatched ( and ).
这不会抛出任何异常:
std::regex e("a(?=b)");
我错过了什么?
答案 0 :(得分:18)
C ++ 11 <regex>
使用ECMAScript的(ECMA-262)正则表达式语法,因此不会具有后瞻性(C ++ 11支持的其他正则表达式也不会没有后顾之处。
如果您的使用案例需要使用后视,您可以考虑改用Boost.Regex。