c++ - 匹配整个单词的增强正则表达式不起作用
问题描述
我正在使用一些带有 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"
一切正常。
所以我现在的问题是我在这些表达式中做错了什么。我希望有人可以帮助我并且确实看到了错误。
特别感谢所有可以帮助我前进的人。
解决方案
boost::regex文档指出,lookbehind 需要是固定长度。您的后视匹配零个或一个字符。
推荐阅读
- wix - WIX:仅阻止更新某些旧版本
- c++ - 如何使用数组打印 10 位大数字的反转?
- mongodb - MongoDB $sample 很慢
- oauth-2.0 - 拒绝在框架中显示“google oauth2”,因为它将“X-Frame-Options”设置为“DENY”
- html - 如何使用 CSS 中的 :nth-child() 属性在列表中添加背景颜色(在链接中显示参考图像)
- asp.net-web-api - Postman 无法访问从 Visual Studio 2019 运行的基于 Windows 身份验证的 WebAPI
- python - 如何对csv文件的行进行排序?
- javascript - 我试图运行命令 Discord.js 但出现错误“TypeError:无法读取未定义的属性'get'”
- spring-boot - Spring Boot - 创建自定义事件循环
- c++ - 如何在 DDS idl 文件中定义一个类和方法?