使用Boost :: regex的奇怪结果

Jat*_*tra 0 c++ regex boost boost-regex

我正在玩Boost :: regex,这是我第一次使用正则表达式和Boost,所以请原谅我,如果问题真的很愚蠢.
我得到一个NO_MATCH,其中包含以下值:

actual_name = "q\[0\]123"
user_name   = "q[0]123"
Run Code Online (Sandbox Code Playgroud)

PS在调试器中,当我打印actual_name它时显示 - q\\[0\\]123.但是,当我执行actual_name.size()时,结果是9.

这是我的代码:

boost::regex regexpr( actual_name );
boost::match_results<pstring::const_iterator> what;
boost::regex_match(user_name, what, regexpr);

if(what[0].matched)
{
     // Match found
}
else
{
    // NO_match found
}
Run Code Online (Sandbox Code Playgroud)

我在Rubular.com上尝试了相同的组合,regular_expression = "q\[0\]123"test-string = "q[0]123"那里返回一个Complete_Match.

我错过了什么?

R. *_*des 8

"q\[0\]123" 编译?

\[不是反斜杠字符后面跟一个开头的方括号字符.这是一个逃脱序列.我不记得它是一个有效的转义序列,但它可能是你的编译器的扩展.

你需要像它一样转义反斜杠"q\\[0\\]123",或者像使用C++ 11原始字符串文字一样R"(q\[0\]123)".