为什么我不能在C++ 11中使用lookbehinds?Lookahead工作得很好.
std::regex e("(?<=a)b");
Run Code Online (Sandbox Code Playgroud)
这将抛出以下异常:
The expression contained mismatched ( and ).
Run Code Online (Sandbox Code Playgroud)
这不会抛出任何异常:
std::regex e("a(?=b)");
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
nha*_*tdh 20
C++ 11 <regex>使用ECMAScript的(ECMA-262)正则表达式语法,因此它不具有后瞻性(C++ 11支持的其他版本的正则表达式也没有后悔).
如果你使用的情况下需要使用向后看的,你可以考虑使用Boost.Regex代替.