我试图执行正则表达式替换。我似乎无法弄清楚的具体问题是,在我的第二次反向引用后,我有一个字符串文字编号(数字1)。使用MS Visual Studio 2012(C ++控制台项目......而不是.NET),它不起作用。我假设因为它需要我的反向引用为21美元,而不是2美元。我尝试了各种语法,但无法提出有效的方法!
std::string input = "my_variable_name_iei_lo1";
std::string regx = "(\\w+)iei_(lo_hi)1";
std::string sub = "$1ied_$21";
std::regex rx(regx);
std::string result = std::regex_replace(input, rx, sub);
// result is "my_variable_name_ied_"
// should be "my_variable_name_ied_lo1"
我尝试了各种指定反向引用的方法:
std::string sub = "$1ied_${2}1";
// result is "my_variable_name_ied_${2}1"
// should be "my_variable_name_ied_lo1"
其他的东西给我语法错误,包括尝试使用命名捕获组,但后来读取不再支持。如此接近我的答案,但仍然遥远!
答案 0 :(得分:0)
Gunn找到的解决方案:
Using $021 worked! I knew about the two digit limitation (99 capture groups)
but for whatever reason, never thought to try 01, 02, etc. So having the substitution
string be "$01ied_$021" gives me the result I was looking for. Thanks!