现在我正在处理以下两个正则表达式替换,我像这样组合替换。是否有办法只调用一次regex_replace
来处理更换?
std::string test_string = "whatever";
std::regex reg_num("\"([0-9]+\.{0,1}[0-9]*)\"");
std::regex reg_newline("n+");
return std::regex_replace(std::regex_replace(test_string, reg_num, "$1"), reg_newline, "");
可以使用
std::string test_string = ""1" "1.50"nNew line";
std::regex reg_combined(""([0-9]+\.?[0-9]*)"|n");
std::cout << std::regex_replace(test_string, reg_combined, "$1");
参见c++演示。
如果组1没有参与匹配,则$1
反向引用将使用空字符串初始化,因此删除这样的换行是安全的。
模式细节:
"
-一个"
字符(注意你不需要转义)([0-9]+.?[0-9]*)
-组1:一个或多个数字,一个可选的.
,然后是零或多个数字(你确定你不需要[0-9]*.?[0-9]+
吗?)"
- a"
char|
-或n
-换行字符。