执行后...
std::regex_replace("the string", std::regex(""), "doesn't matter");
...我的 Mac 将无限期挂起。我是 xcode 新手,但我认为我正确使用它。我在调试程序时点击“暂停”,发现最后执行的代码位于正则表达式库的深处。我需要空白正则表达式才能工作,因为用户可能输入空白。
这不会发生在 Windows 上(我正在开发跨平台)。
这不会发生在std::regex_match()
.
至于根本原因,请参见正则表达式.cpp源代码 http://www.opensource.apple.com/source/libcpp/libcpp-31/src/regex.cpp at 苹果开源 http://www.opensource.apple.com/:
case regex_constants::__re_err_empty:
return "An empty regex is not allowed in the POSIX grammar.";
因此,您必须检查用户输入并禁止传递空字符串来创建正则表达式对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)