我试图用正则表达式消除字符串中的空白。来自以下代码片段:
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