gpt4 book ai didi

c++ - 使用 Boost C++ 库将正则表达式替换为自定义替换

转载 作者:行者123 更新时间:2023-11-30 01:59:48 25 4
gpt4 key购买 nike

我可以使用 Boost 库的 Xpressive 来做一些正则表达式替换,如下所示:

#include <iostream>
#include <boost/xpressive/xpressive.hpp>

void replace(){
std::string in("a(bc) de(fg)");
sregex re = +_w >> '(' >> (s1= +_w) >> ')';
std::string out = regex_replace(in,re,"$1");
std::cout << out << std::endl;
}

我需要的是用某个转换函数的结果替换捕获的部分,例如

std::string modifyString(std::string &in){
std::string out(in);
std::reverse(out.begin(),out.end());
return out;
}

所以上面提供的示例的结果将是cb gf

您认为实现这一目标的最佳方法是什么?

提前致谢!

最佳答案

使用

std::string modifyString(const smatch& match){
std::string out(match[1]);
std::reverse(out.begin(),out.end());
return out;
}

void replace(){
std::string in("a(bc) de(fg)");
sregex re = +_w >> '(' >> (s1= +_w) >> ')';
std::string out = regex_replace(in, re, modifyString);
std::cout << out << std::endl;
}

live example

在文档中有关于 regex_replace 函数的所有信息 view Desctiption/Requires

关于c++ - 使用 Boost C++ 库将正则表达式替换为自定义替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15831950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com