如果给出空白正则表达式表达式,则在regex_replace中使用C ++ Mac OS无限循环

时间:2015-11-06 19:58:20

标签: c++ regex macos

执行......

std::regex_replace("the string", std::regex(""), "doesn't matter");

...我的Mac将无限期挂起。我是xcode的新手,但我认为我正确使用它。我在调试程序时点击“暂停”,发现最后执行的代码在regex库中。我需要空白正则表达式才能工作,因为用户可能输入空白。

这在Windows上不会发生(我正在开发跨平台)。

std::regex_match()不会发生这种情况。

1 个答案:

答案 0 :(得分:3)

至于根本原因,请参阅regex.cpp source code上的Apple Open Source

case regex_constants::__re_err_empty:
    return "An empty regex is not allowed in the POSIX grammar.";

因此,您必须检查用户输入并禁止传递空字符串以创建正则表达式对象。