我有一个像这样的字符串
string basestring= "A\B+C+E\FG+\K987+54h\";
我必须用相同的特殊字符和替换所有出现的特殊字符。
输出应为:
"A\\B\+C\+E\\FG\+\\K987\+54h\\"
当前,我正在使用以下代码来获取结果。
regex Reg("[^A-Z0-9]", regex_constants::icase);
string help = regex_replace("A\B+C+E\FG+\K987+54h\", Reg, "\\");
这将用\替换所有特殊字符,如何获取最后出现的特殊字符?
答案 0 :(得分:1)
使用
std::regex Reg("[^A-Z0-9]", std::regex_constants::icase);
std::string help = std::regex_replace(R"(A\B+C+E\FG+\K987+54h\)", Reg, R"(\$&)");
替换是一个反斜杠,后跟匹配值(对整个匹配的反引用是$&
)。
答案 1 :(得分:0)
进行此替换时:
regex_replace("A\B+C+E\FG+\K987+54h\", Reg, "\\");
您正将\\
替换为您匹配的每种模式。
要获得所需的输出,您需要在匹配的模式中替换转义字符,如下所示:
std::regex_replace(R"(A\B+C+E\FG+\K987+54h\)", Reg, "\\$0");
// insert \\ before the match ^^^^
还请注意,输入字符串需要转义特殊字符,或写为原始字符串文字。
这里是demo。