我能想到的最好的是:
#include <boost/algorithm/string/replace.hpp>
#include <boost/regex.hpp>
#include <iostream>
using namespace std;
int main() {
string dog = "scooby-doo";
boost::regex pattern("(\\w+)-doo");
boost::smatch groups;
if (boost::regex_match(dog, groups, pattern))
boost::replace_all(dog, string(groups[1]), "scrappy");
cout << dog << endl;
}
输出:
scrappy-doo
..有没有一种更简单的方法,不涉及进行两次不同的搜索?也许是新的 C++11 东西(虽然我不确定它是否与 gcc atm 兼容?)