C++11 正则表达式 : digit after capturing group in replacement string

标签 c++ regex c++11 regex-group

我的 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/

相关文章:

python - 将 LaTeX 保留字符与正则表达式匹配

JavaScript 正则表达式从文本文件中获取标题和副标题

javascript - 正则表达式匹配一个字符的一次出现,同时匹配另一个字符的两次出现

c++ - 具有通用引用的模板构造函数是否隐藏移动构造函数?

c++ - Boost split 不遍历括号或大括号内

c++ - 有人建议我这段代码中剩下的内容。运行时未显示任何错误,但输出带有垃圾值

c++ - 错误: 'operator>>' 不匹配(操作数类型为 'std::basic_istream<char> cin>> salary >> endl;^

c++ - 派生对象数组到基础对象数组

string - 使用 {} 初始化 C++11 字符串

c++ - 模板特化中的默认实参参数