我的 regex_replace 表达式在替换字符串中的“0”字符之前使用组 $1,如下所示:
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
regex regex_a( "(.*)bar(.*)" );
cout << regex_replace( "foobar0x1", regex_a, "$10xNUM" ) << endl;
cout << regex_replace( "foobar0x1", regex_a, "$1 0xNUM" ) << endl;
}
输出是:
xNUM
foo 0xNUM
我正在尝试获取没有中间空格的输出 foo0xNUM
。
如何保护组名 $1 免受替换字符串中的下一个字符的影响?
最佳答案
您可以指定 $n
或 $nn
来引用捕获的文本,因此您可以使用 $nn
格式(此处$01
) 以避免抓取 0
.
cout << regex_replace( "foobar0x1", regex_a, "$010xNUM" ) << endl;
关于C++11 正则表达式 : digit after capturing group in replacement string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809811/