我想在字符串ss中选择)9, 用* 9
替换它我在第2行(ee的def)得到一个未处理的表达式错误。 我已经尝试了我能想到的第2行的所有组合(包括双重转义d)。
std::string ss ("1 + (3+2)9 - 2 ");
std::regex ee ("(\\)\d)([^ ]");
std::string result;
std::regex_replace (std::back_inserter(result), ss.begin(), ss.end(), ee, "*$2");
std::cout << result;
答案 0 :(得分:2)
你需要逃避所有的反斜杠:
"(\\)\\d)([^ ]"
否则你可能会向正则表达式发送一个控制字符,而不是两个字符\
和d
。
另外,你需要第二个(
的正则表达式反斜杠:
"(\\)\\d)\\([^ ]"
或者您需要添加匹配的近括号:
"(\\)\\d)([^ ])"