我的任务是用std :: regex替换boost :: regex,并使用boost :: regex引用来捕获组索引。
正则表达式看起来像这样:
re = "(^Match1$)|(^Match2$)|(^Match3$)|(^Match4$)"
使用替换字符串:
replace_str = "(?{1}M1)(?{2}M2)(?{3}M3)(?{4}M4)"
如果我致电boost::regex_replace("Match1", re, replace_str, format_all)
我得到" M1"结果,std::regex_replace("Match1", re, replace_str)
结果包含整个replace_str。
正则表达式的标准化变体没有format_all选项(不确定是否存在问题)。 http://en.cppreference.com/w/cpp/regex/match_flag_type
如何使用c ++ 11/14正则表达式库重现类似的行为? 我是否错过了允许在没有提升的情况下使用该行为的选项或语法?
答案 0 :(得分:1)
std::regex
library不支持Boost正则表达式引擎支持的Boost-Extended Format String Syntax。
如果您正在寻找Boost的替代方案,您可以考虑切换到支持类似条件替换模式语法的PCRE2。请参阅PCRE2 Extended Replacement String Syntax文章。