C++ std::regex_replace:不相交匹配组的访问索引

C++ std::regex_replace:不相交匹配组的访问索引,c++,regex,c++11,boost,C++,Regex,C++11,Boost,我的任务是用std::regex替换boost::regex,并在捕获组索引的boost::regex引用中遇到了一个问题 正则表达式如下所示: re = "(^Match1$)|(^Match2$)|(^Match3$)|(^Match4$)" 使用替换字符串: replace_str = "(?{1}M1)(?{2}M2)(?{3}M3)(?{4}M4)" 如果我调用boost::regex\u replace(“Match1”,re,replace\u str,format\u all

我的任务是用std::regex替换boost::regex,并在捕获组索引的boost::regex引用中遇到了一个问题

正则表达式如下所示:

re = "(^Match1$)|(^Match2$)|(^Match3$)|(^Match4$)"
使用替换字符串:

replace_str = "(?{1}M1)(?{2}M2)(?{3}M3)(?{4}M4)"
如果我调用boost::regex\u replace(“Match1”,re,replace\u str,format\u all) 我得到“M1”作为结果,使用std::regex_replace(“Match1”,re,replace_str)结果由整个replace_str组成

regex的标准化变体没有format_all选项(不确定这是否是问题)。

如何在c++11/14正则表达式库中重现类似的行为? 我是否错过了允许在没有boost的情况下使用该行为的选项或语法?

不支持boost正则表达式引擎支持的选项或语法

如果你正在寻找一个替代Boost的方法,你可以考虑切换到支持类似的条件替换模式语法的PCRe2。见PCRE2文章