【发布时间】:2017-04-07 15:21:07
【问题描述】:
我正在尝试匹配任何不以句点结尾的完整单词。我有以下带有负前瞻的正则表达式,std::regex rex("\\w+(?!\\.)");
但是,它仍然会在 "joe." 这样的词上产生匹配,我错过了什么?
【问题讨论】:
我正在尝试匹配任何不以句点结尾的完整单词。我有以下带有负前瞻的正则表达式,std::regex rex("\\w+(?!\\.)");
但是,它仍然会在 "joe." 这样的词上产生匹配,我错过了什么?
【问题讨论】:
您需要确保单词后面有单词边界:
std::regex rex(R"(\w+\b(?!\.))");
否则,会发生回溯,您会在 joe. 中找到 jo 和 your pattern。
我还建议在定义正则表达式时使用原始字符串文字,这样可以消除过多的反斜杠。
【讨论】: