C ++ 11正则表达式匹配一个不以句点结尾的完整单词?
Posted
技术标签:
【中文标题】C ++ 11正则表达式匹配一个不以句点结尾的完整单词?【英文标题】:C++11 regex matching a full word that does not end with a period? 【发布时间】:2017-04-07 15:21:07 【问题描述】:我正在尝试匹配任何不以句点结尾的完整单词。我有以下带有负前瞻的正则表达式,std::regex rex("\\w+(?!\\.)");
但是,它仍然会在 "joe."
这样的词上产生匹配,我错过了什么?
【问题讨论】:
【参考方案1】:您需要确保单词后面有单词边界:
std::regex rex(R"(\w+\b(?!\.))");
见regex demo
否则,会发生回溯,您会在 joe.
中找到 jo
和 your pattern。
我还建议在定义正则表达式时使用原始字符串文字,这样可以消除过多的反斜杠。
【讨论】:
谢谢你的工作,我会在 8 分钟内接受你的回答 :)以上是关于C ++ 11正则表达式匹配一个不以句点结尾的完整单词?的主要内容,如果未能解决你的问题,请参考以下文章