Regex C+中的正则表达式替换+;11

Regex C+中的正则表达式替换+;11,regex,c++11,Regex,C++11,我需要用字符串unit19替换类型为T1.9的字符串。位数可能不同,例如T34.999应变为unit34999。以下是我的进展: std::regex e ("^(T\d+\.\d+)$"); std::string result (std::regex_replace(version, e, "") ); 我应该为格式写什么?或者在一次迭代(而不是两次迭代)中替换字符串的方法是错误的?您需要调整模式中的捕获组,并在替换模式中使用反向引用: ^T([0-9]+)[.]([0-9]+)$ 并替

我需要用字符串
unit19
替换类型为
T1.9
的字符串。位数可能不同,例如
T34.999
应变为
unit34999
。以下是我的进展:

std::regex e ("^(T\d+\.\d+)$");
std::string result (std::regex_replace(version, e, "") );

我应该为格式写什么?或者在一次迭代(而不是两次迭代)中替换字符串的方法是错误的?

您需要调整模式中的捕获组,并在替换模式中使用反向引用:

^T([0-9]+)[.]([0-9]+)$
并替换为
单位$1$2

A:

#包括
#包括
使用名称空间std;
int main(){
std::向量字符串;
字符串。推回(“T34.999”);
字符串。推回(“T1.9”);
std::regex reg(“^T([0-9]+)[.]”([0-9]+)$”;
对于(size_t k=0;k非常感谢。我一直在努力学习正则表达式。这次我为今天的其他正则表达式任务定制了您的示例。
#include <iostream>
#include <regex>
using namespace std;

int main() {
    std::vector<std::string> strings;
    strings.push_back("T34.999");
    strings.push_back("T1.9");
    std::regex reg("^T([0-9]+)[.]([0-9]+)$");
    for (size_t k = 0; k < strings.size(); k++)
    {
        std::cout << std::regex_replace(strings[k], reg, "unit$1$2") << std::endl;
    }
    return 0;
}