0

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

私が間違っている可能性があることを教えてください。

4

1 に答える 1

0

Boostについては知りませんが、std::regex(TR1およびC ++ 11では)Boostに基づいていたため、名前付き部分式はサポートされていません。

于 2012-09-03T12:40:17.507 に答える