C++ boost::regex搜索和替换

C++ boost::regex搜索和替换,c++,regex,boost,boost-regex,C++,Regex,Boost,Boost Regex,我正在写一个程序,用它来处理字符串。 在所有情况下,我都需要的功能,但只有特定情况下需要。 有没有办法将两者结合起来,这样替换就不会重复搜索工作 我打过电话后就知道了 boost::regex re; std::string str, fmt; // . . . boost::smatch match; regex_search( str, match, re ); match包含有关匹配的信息,但 match.format( fmt ); 不做什么 regex_replace( str,

我正在写一个程序,用它来处理字符串。 在所有情况下,我都需要的功能,但只有特定情况下需要。 有没有办法将两者结合起来,这样替换就不会重复搜索工作

我打过电话后就知道了

boost::regex re;
std::string str, fmt;
// . . .
boost::smatch match;
regex_search( str, match, re );
match包含有关匹配的信息,但

match.format( fmt );
不做什么

regex_replace( str, re, fmt );

是否。

可能使用动态替换:

那里的示例有一个c++03、c++11变体,其中包含命名/未命名的子匹配


你能解释一下为什么你认为这是个糟糕的问题吗?
#include <boost/regex.hpp>
#include <iostream>

int main() {
    std::string pattern = "dddd, mmmm d, yyyy";
    pattern = boost::regex_replace(pattern, boost::regex("(dddd)|(d)|(mmmm)|(yyyy)"), [](auto& match)->std::string{
        if (match.str() == "dddd")
            return "Tuesday";

        if (match.str() == "d")
            return "26";

        if (match.str() == "mmmm")
            return "December";

        if (match.str() == "yyyy")
            return "2016";

        return "";
    });

    std::cout << "Result: " << pattern << "\n";
}