如何使用非捕获组在标记之间用std::regex_replace替换空格?



我试图用正则表达式消除字符串中的空白。来自以下代码片段:

std::string in = "abc>  <defn"
"xyz>      n";
std::regex re = R"((?:>)s+(?:<)|s+$)";
std::string out = std::regex_replace(in, re, "(newcontent)");

我希望out包含

abc>(newcontent)<def
xyz>(newcontent)

但是,唉,我得到

abc(newcontent)def
xyz>(newcontent)

。对我来说,似乎非捕获序列(?:...)不起作用。我试图修改扩展为std::regex re ("....", std::regex::ECMAScript | std::regex::nosubs);的程序,并将, std::regex_constants::format_default附加到regex_replace,但无济于事。这是库实现问题还是我有错?

如果捕获了><,则可以将它们写回。
这样就不会出现断言兼容性问题。

(>)s+(<)|s+$

代替

$1(newcontent)$2

https://regex101.com/r/dOjUlw/1

相关内容

  • 没有找到相关文章

最新更新