C ++ 11正则表达式匹配一个不以句号结尾的完整单词?

时间:2017-04-07 15:21:08

标签: c++ regex string

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

然而,它仍然会像"joe."这样的字词产生匹配我错过了什么?

1 个答案:

答案 0 :(得分:4)

您需要确保单词后跟单词边界:

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

请参阅regex demo

否则,会发生回溯,您会在jo joe.中找到native

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