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

Car*_*901 11 c++ regex c++11

为什么我不能在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代替.