在Boost Regex中命名为Subexpressions错误

时间:2012-09-03 12:36:37

标签: c++ regex boost boost-regex

我正在尝试使用命名子表达式来使用boost :: regex_replace和命名子表达式替换输入字符串中的多个模式。

我使用以下代码:

std::string s="Sun Fun Gun Tic Tac Toe ;$!";
boost::regex expr("(?<from1>.un)|(?<from2>[:;!])"); //Throws the error
std::string fmt("(?'from1'nm)(?'from2'sp)");
std::string s2 = boost::regex_replace(s,expr,fmt,boost::match_default|boost::format_all);
std::cout<<s2<<std::endl;

然而,当运行thos时会抛出以下错误:

terminate called after throwing an instance of 'boost::regex_error'
what():  Invalid preceding regular expression
Aborted

请指导我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

不了解Boost,但基于Boost的std::regex(在TR1和C ++ 11中)不支持命名子表达式。