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;
}