Странные результаты с Boost :: regex

Я играл с Boost :: regex, и это первый раз, когда я работаю с regex, а также с Boost, так что простите, если вопрос действительно глупый.
Я получаю NO_MATCH со следующими значениями:

actual_name = "q\[0\]123"user_name   = "q[0]123"

Постскриптум В отладчике, когда я напечатал 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
}

Я попробовал ту же комбинацию regular_expression = "q\[0\]123" а также test-string = "q[0]123" на Rubular.com и он возвращает Complete_Match там.

Что мне не хватает?

0

Решение

"q\[0\]123" компилирует?

\[ не является символом обратной косой черты, за которым следует символ открывающей квадратной скобки. Это побег последовательность. Я не помню, чтобы это была допустимая escape-последовательность, но это может быть расширение в вашем компиляторе.

Вы должны избежать обратной косой черты, как "q\\[0\\]123"или используйте строковый литерал C ++ 11, например R"(q\[0\]123)",

8

Другие решения

Если это ваш фактический код присвоения actual_nameкажется, ты не удваиваешь \\ чтобы защитить их от компилятора C ++: "q\\[0\\]123"

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector