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";
}