【问题标题】:C++11 regex matching a full word that does not end with a period?C ++ 11正则表达式匹配一个不以句点结尾的完整单词?
【发布时间】:2017-04-07 15:21:07
【问题描述】:

我正在尝试匹配任何不以句点结尾的完整单词。我有以下带有负前瞻的正则表达式,std::regex rex("\\w+(?!\\.)");

但是,它仍然会在 "joe." 这样的词上产生匹配,我错过了什么?

【问题讨论】:

    标签: c++ regex string


    【解决方案1】:

    您需要确保单词后面有单词边界:

    std::regex rex(R"(\w+\b(?!\.))");
    

    regex demo

    否则,会发生回溯,您会在 joe. 中找到 joyour pattern

    我还建议在定义正则表达式时使用原始字符串文字,这样可以消除过多的反斜杠。

    【讨论】:

    • 谢谢你的工作,我会在 8 分钟内接受你的回答 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 2016-12-22
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多