【发布时间】:2015-06-30 20:00:44
【问题描述】:
我的 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 免受替换字符串中的下一个字符的影响?
【问题讨论】:
-
这真令人气愤。我的第一个想法是使用 ${1},但这不受支持。我的下一个想法是使用一个命名的捕获组——这是不被支持的。我真的很好奇正确答案。
-
@timgeb - 是的,我正在从 boost::regex 迁移 ${1} 工作正常。
标签: c++ regex c++11 regex-group