regex_replace
Regex_iterator方法需要输入一个正则表达式,以及一个用于替换匹配的字符串的格式化字符串;这个格式化的字符串可以通过表的转义序列引用匹配子字符串的部分内容;
|
转义序列 |
|
|
$n |
替换第n个捕获的字符串,$1表示第一个捕获组,$2表示第二个捕获组 |
|
$& |
匹配整个正则表达式的字符串,等于$0 |
|
$’ |
在输入字符串中,在匹配正则表达式的字符串左侧部分 |
|
$` |
在输入字符串中,在匹配正则表达式的字符串右侧部分 |
|
$$ |
美元 |
原型:std::string regex_replace(inputSequence,Regex,FormateString,[, Flags]);
inputSequence可以是C风格的字符串,
Regex是正则表达式
FormateString是需要替换掉匹配的子字符串的格式化字符串;
Flags是可选参数
在第四个参数可以为以下;
|
Flag(标志) |
Expressions(说明) |
|
Format_default |
默认是替换模式的所有实例,并将所有不匹配的内容复制到结果中; |
|
Format_no_copy |
默认是替换模式的所有实例,并将所有不匹配的内容不复制到结果中; |
|
Formate_first_only |
只替换模式里的第一个实例 |
在没有第四个参数的时候(也就是第四个参数默认的)实例:
std::regex r("<hl>(.*)</hl><pl>(.*)</pl>");
const std::string formate = "H1 = $1 and P1 = $2";
std::string str;
while(true)
{
if(!std::getline(std::cin,str) || str == "q")
{
break;
}else
{
std::string result = std::regex_replace(str,r,formate);
std::cout << result << std::endl;
}
}
输入:
<body><hl>Header</hl><pl>Some text</pl></body>
输出:
<body>H1 = Header and P1 = Some text</body>
当我们写入第四个参数的时候:
std::regex r("<hl>(.*)</hl><pl>(.*)</pl>");
const std::string formate = "H1 = $1 and P1 = $2";
std::string str;
while(true)
{
if(!std::getline(std::cin,str) || str == "q")
{
break;
}else
{
std::string result = std::regex_replace(str,r,formate,std::regex_constants::format_no_copy);
std::cout << result << std::endl;
}
}
return ;
输入:
<body><hl>Header</hl><pl>Some text</pl></body>
输出:
H1 = Header and P1 = Some text
这就是两者的差别;
regex_replace的更多相关文章
- C++中的也能使用正则表达式
正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达式纳入了新标准的一部分,不仅如此,它还支持了6种不同 ...
- c++11 正则表达式基本使用
c++ 11 正则表达式 常用的方法 regex_match regex_search regex_replace 等. regex_match 要求正则表达式必须与模式串完全匹配,例如: strin ...
- 正则表达式python和C++对比
pattern格式(基本通用): pattern格式 符号 说明 ^ 匹配开头 $ 匹配结尾 . 匹配任意一个字符 [...] 匹配任意一个指定的字符 [^...] 匹配任意一个非指定的字符 * 匹配 ...
- Smarty3学习笔记
Smarty3 笔记 By 飞鸿影~ -- :: Smarty入门 1.什么是smarty? Smarty是采用php写的一个模版引擎,设计的目的是要将php代码与html代码分离, 使php程序员只 ...
- Hive conf issue
Hive --hiveconf v1="test" --hiveconf v2 -e "select * from ${hiveconf:v1} where col1=' ...
- smarty3.0中文手册文档API及使用指南
1.安装Smarty3.0一.什么是smarty?smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变 ...
- Smarty笔记 和20个常用的变量操作符
什么是Smarty变量操作符php模板引擎smarty内置的一些操作函数,我们称之为变量操作符,变量操作符可用于操作变量,自定义函数和字符.(跟我PHP中常用的PHP内部函数类似)他可以帮助我们完成很 ...
- work7
uno. 理解C++变量的作用域和生命周期 没有要求讲解我就简单注释了一下~ #include <iostream>int main(){ for (int i=0;i<10;i++ ...
- Smarty模板引擎技术
Smarty模板引擎技术 什么是模板引擎? 什么是Smarty模板引擎? 为何选择Smarty模板引擎? 如何使用Smarty模板引擎? 一.历史背景 场景一:回顾之前编写PHP项目的方式 //链接数 ...
随机推荐
- 解决 ImportError: cannot import name pywrap_tensorflow
原文:https://aichamp.wordpress.com/2016/11/13/handeling-importerror-cannot-import-name-pywrap_tensorfl ...
- 使用vue+webpack打包时,去掉资源前缀
在build文件夹下找到webpack.prod.conf.js文件,搜索 filename: utils.assetsPath('css/[name].[contenthash].css'), 将[ ...
- iOS中表视图单元格事件用nib和storyboard的两种写法总结
从ios6开始,苹果公司推出了storyborad技术取代了nib的写法,这样代码量确实少写了很多,也比较简洁.但是,从学习的角度来说,阿堂认为 用nib的写法,虽然多了些代码,但是对于掌握知识和原理 ...
- java注册后缀样式(ajax提示)
方法位置 <FORM id=form1 name=form1 action = "${pageContext.request.contextPath }/user_regist.act ...
- memcached 的 SockIOPool 概念
池的概念 SockIOPool 首先来看下属性 SockIOPool属性 boolean initialized = false – 初始化是否完成的标志,只有初始化完成后上层才能正常使用池 int ...
- Android使用xml文件中的array资源
Android中有种使用数组的非常简单的用法,在xml文件中获取. 创建数组资源 在value目录下创建arrays.xml文件 然后在arrays.xml文件中使用<string-array& ...
- java 对象
对象可以看成是静态属性和动态属性的封装体.静态属性——成员变量:动态属性——方法. 1.汇编语言是对机器语言的抽象. 2.面向过程的语言是对汇编语言的抽象.属性和方法分离,不是封装在一起的,复用性 ...
- ES6入门——类的概念
1.Class的基本用法 概述 JavaScript语言的传统方式是通过构造函数,定义并生成新对象.这种写法和传统的面向对象语言差异很大,下面是一个例子: function Point(x, y) { ...
- 009_svn配置多仓库与权限控制(Alpha)
1,配置多仓库 实际项目中,我们会同时开发多个项目,通过SVNserve进行仓库监管,但是监管命令只能同时监管一个文件夹,而不能同时监管多个仓库. 解决方法: 可以通过监管总目录来监管所有仓库 SVN ...
- save与Update的合并操作 标签: 关系映射 2017-07-13 15:11 7人阅读 评论(0) 收藏
做save与update的方法合并操作时,判断条件是主体对象的ID是否存在. 但是当页面中,涉及到多个主体对象的关联对象时,情况变得复杂起来,特总结项目中的几点 一.页面中的VO对象属性可以分为三类: ...