std::regex_replace,
我可以使用“$”匹配单词的结尾,然后附加其他字符。
std::cout << std::regex_replace("word",std::regex("$"),"s") << '\n';
//prints: words
由于结果与原始输入不同,我假设正则表达式已匹配。
然而,
std::cout << std::boolalpha;
std::cout << std::regex_match("word",std::regex("$")) << '\n';
//prints: false
如何使正则表达式不匹配,但是regex_replace能够替换吗?
我还尝试为0个或多个字符添加*
,但这引发了异常:
std::cout << std::regex_match("word",std::regex("*$")) << '\n';
std::cout << std::regex_replace("word",std::regex("*$"),"s") << '\n';
答案 0 :(得分:1)
请注意,regex_match只会将正则表达式与整个字符序列成功匹配,而std :: regex_search将成功匹配子序列。
您希望regex_search
匹配子序列。 $
与非空字符串的整体不匹配,但与非空字符串的(零长度)子字符串匹配。