我可以在regex_replace中使用$ 1吗?

tow*_*owi 12 c++ regex replace c++11

从阅读FCD regex_replace(28.11.4)我只能猜测该函数还可以使用原始字符串的一部分进行替换?我不能用我的gcc测试它,这是正确的吗?

using namespace std;
regex rx{ R"((\d+)-(\d+))" }; // regex: (\d+)-(\d+)
cout << regex_replace("123-456", rx, "b: $2, a:$1");
// "b: 456, a:123"
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我认为$1$2"()"捕获组(而不是\1\2像其他地方).

更新.所以,我想这是一个由两部分组成的问题

  • 是否支持在替换文本中使用捕获组
  • 使用$n的默认ECMAScript语法是什么?还是\n

bam*_*s53 7

C++ 2011 FDIS中的表139列出了两个常量,可用于影响格式字符串中使用的规则regex_replace,format_defaultformat_sed.format_default被描述为使用"ECMA-262中的ECMAScript替换函数使用的规则,第15.5.4.11节String.prototype.replace".该标准确实表明$用于反向引用.见:ECMA-262

使用该format_sed标志代替使用POSIX中sed实用程序的规则.Sed似乎不支持$反向引用.