当前位置: 首页 > news >正文

boost::regex_replace的使用

boost::regex_replace的使用

boost::regex_replace是一个用于替换字符串内容的接口,boost官方链接在这里,最近用到这个接口的场景比较多,在此记录下这两种构造函数的使用方式

第一种方式

template <class traits, class Formatter>
basic_string<charT> regex_replace(const basic_string<charT>& s,const basic_regex<charT, traits>& e,Formatter fmt,match_flag_type flags = match_default);

这种方式比较好理解,传入的参数是待替换的字符串,匹配的正则pattern,以及替换的格式,例如:

string s1 = "0 0  10000 10000"
boost::regex pattern("-?\\d+ -?\\d+");
string resline = boost::regex_replace(s1, pattern, "( $& )");
cout<<resline<<endl; // 输出结果为 ( 0 0 ) ( 10000 10000)

这种方式的输出结果是字符串

第二种方式

输出结果是一个迭代器

template <class OutputIterator, class BidirectionalIterator, class traits, class Formatter>
OutputIterator regex_replace(OutputIterator out,BidirectionalIterator first,BidirectionalIterator last,const basic_regex<charT, traits>& e,Formatter fmt,match_flag_type flags = match_default);

使用示例如下所示:

string s1 = "0 0  10000 10000"
boost::regex pattern("-?\\d+ -?\\d+");
string resline = boost::regex_replace(line, pattern, "( $& )");boost::regex       pattern(" -?\\d+ -?\\d+");
std::ostringstream t(std::ios::out | std::ios::binary);
std::ostream_iterator<char, char> oi(t);
boost::regex_replace(oi, line.begin(), line.end(), pattern, " ( $& )");
cout<<t.str()<<endl; // 输出结果为 ( 0 0 ) ( 10000 10000)

这种方式可能会比较麻烦一些,它的特点是输出结果是迭代器,如果是一个vector,这种就可以一个接口就替换完了,不用使用循环去做。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 海外ASO:iOS与谷歌优化的相同点和区别
  • LabVIEW电子水泵性能测试平台
  • 四个“一体化”——构建数智融合时代下的一站式大数据平台
  • 印尼Facebook直播网络需要达到什么要求?
  • 微信小程序毕业设计-汽车维修项目管理系统项目开发实战(附源码+论文)
  • 图——图的遍历(DFS与BFS)
  • Go 语言 UUID 库 google/uuid 源码解析:UUID version4 的实现
  • Apache功能配置:访问控制、日志分割; 部署AWStats日志分析工具
  • MySQL 面试真题(带答案)
  • pxe高效网络批量装机
  • 0基础学会在亚马逊云科技AWS上利用SageMaker、PEFT和LoRA高效微调AI大语言模型(含具体教程和代码)
  • 服务客户,保证质量:腾讯云产品的质量实践
  • 医疗健康信息的安全挑战与隐私保护最佳实践
  • 【周末闲谈】Stable Diffusion会魔法的绘画师
  • Facebook软体机器人与机器人框架:创新社交互动的未来
  • 30秒的PHP代码片段(1)数组 - Array
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • If…else
  • Kibana配置logstash,报表一体化
  • Less 日常用法
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • node入门
  • php ci框架整合银盛支付
  • Vue.js 移动端适配之 vw 解决方案
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 记一次用 NodeJs 实现模拟登录的思路
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 聊聊flink的TableFactory
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • -- 数据结构 顺序表 --Java
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 国内开源镜像站点
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #13 yum、编译安装与sed命令的使用
  • #mysql 8.0 踩坑日记
  • (42)STM32——LCD显示屏实验笔记
  • (6)添加vue-cookie
  • (C++)八皇后问题
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (六)激光线扫描-三维重建
  • (七)c52学习之旅-中断
  • (三)c52学习之旅-点亮LED灯
  • (十六)串口UART
  • (五)c52学习之旅-静态数码管
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)Oracle 9i 数据库设计指引全集(1)
  • .NET C# 操作Neo4j图数据库
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 直连SAP HANA数据库
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET4.0并行计算技术基础(1)
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段