首页 > 解决方案 > 匹配整个单词的增强正则表达式不起作用

问题描述

我正在使用一些带有 boost 的正则表达式来搜索某个字符串中的整个单词。源代码如下所示:

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"一切正常。

所以我现在的问题是我在这些表达式中做错了什么。我希望有人可以帮助我并且确实看到了错误。

特别感谢所有可以帮助我前进的人。

标签: c++boost

解决方案


boost::regex文档指出,lookbehind 需要是固定长度。您的后视匹配零个或一个字符。


推荐阅读