Регулярное выражение Boost для соответствия целому слову не работает - PullRequest
1 голос
/ 04 августа 2020

Я использую какое-то регулярное выражение с ускорением для поиска целого слова внутри некоторой строки. Исходный код выглядит так:

boost::regex  regExp;
std::string searchExpression;

searchExpression = "((\\b)" + searchExpression + "(\\b)|(?<=^|\\s)" + searchExpression + "(?=\\s|$))";
regExp.assign(lConvertedSearchExpression, boost::regex_constants::normal | boost::regex_constants::icase);

Регулярное выражение внутри searchExpression хорошо работает с другими моими инструментами. Так что думаю, ничего страшного не будет. Но если я попытаюсь присвоить строку boost::regex, как вы можете видеть в примере, я получу исключение. Исключение составляет часть "(?<=^|\\s)". Если я удалю часть "|\\s", все будет работать хорошо.

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

Особая благодарность всем, кто может помочь мне в дальнейшем.

1 Ответ

1 голос
/ 04 августа 2020

В документации boost :: regex указано, что ретроспективный просмотр должен иметь фиксированную длину. Ваш lookbehind соответствует нулю или одному символу.

...