我的正则表达式不起作用。为什么呢?
boost::regex re("anonuuid|anon_id", boost::regex::icase);
target_string = "anonuuid final.device_anonuuid anon_id";
boost::replace_all(target_string, "anonuuid", "device_anonuuid");
想法是找到并替换整个单词anonuuid OR anon_id。我使用了边界标签\ b这个词,但即便使用它,它也无法使用。以下是我的代码的结果。
device_anonuuid final.device_device_anonuuid anon_id"
但我希望得到这个
device_anonuuid final.device_anonuuid device_anonuuid
提前谢谢。
答案 0 :(得分:1)
您想要regex_replace_all
,请参阅 Live On Coliru 。
另请注意:
\b
(例如"\\b"
)regex_replace_all_copy
返回新字符串而不是修改输入字符串#include <boost/regex.hpp>
#include <boost/algorithm/string_regex.hpp>
#include <string>
#include <iostream>
int main()
{
boost::regex re("\\b(anonuuid|anon_id)\\b", boost::regex::icase);
std::string target_string = "anonuuid final.device_anonuuid anon_id";
std::string format = "QQQQ";
boost::replace_all_regex(target_string, re, format, boost::match_flag_type::match_default);
std::cout << target_string;
}