我找到了this topic,它只解释了如何替换第一个正则表达式匹配。第n场比赛怎么样?
假设我有一个字符串和一个正则表达式,如下所示:
std::string str = "fast cast dust crust must last rust";
std::regex expr = " .(a|u)st";
我如何用其他序列替换第三个匹配?std::regex_replace
允许替换所有匹配或第一个匹配。我也在考虑std::regex_iterator
,但仍然不知道如何在这个任务中应用它。解决这个问题最方便的方法是什么?
1条答案
按热度按时间lo8azlld1#
我已经想出了自己的解决办法。我使用
std::string::replace
从高级std::sregex_iterator
中获取第一个std::sub_match
中的一对迭代器:如果愿意,可以添加一些额外的迭代器验证。我长话短说。
输出为:
然而,值得一提的是,
std::regex_replace
返回一个修改后的副本,而上面的解决方案在原地更改了字符串。此外,应该小心,因为一旦替换完成,sub_match
es中的迭代器可能会失效。