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的更多相关文章

  1. C++中的也能使用正则表达式

    正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达式纳入了新标准的一部分,不仅如此,它还支持了6种不同 ...

  2. c++11 正则表达式基本使用

    c++ 11 正则表达式 常用的方法 regex_match regex_search regex_replace 等. regex_match 要求正则表达式必须与模式串完全匹配,例如: strin ...

  3. 正则表达式python和C++对比

    pattern格式(基本通用): pattern格式 符号 说明 ^ 匹配开头 $ 匹配结尾 . 匹配任意一个字符 [...] 匹配任意一个指定的字符 [^...] 匹配任意一个非指定的字符 * 匹配 ...

  4. Smarty3学习笔记

    Smarty3 笔记 By 飞鸿影~ -- :: Smarty入门 1.什么是smarty? Smarty是采用php写的一个模版引擎,设计的目的是要将php代码与html代码分离, 使php程序员只 ...

  5. Hive conf issue

    Hive --hiveconf v1="test" --hiveconf v2 -e "select * from ${hiveconf:v1} where col1=' ...

  6. smarty3.0中文手册文档API及使用指南

    1.安装Smarty3.0一.什么是smarty?smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变 ...

  7. Smarty笔记 和20个常用的变量操作符

    什么是Smarty变量操作符php模板引擎smarty内置的一些操作函数,我们称之为变量操作符,变量操作符可用于操作变量,自定义函数和字符.(跟我PHP中常用的PHP内部函数类似)他可以帮助我们完成很 ...

  8. work7

    uno. 理解C++变量的作用域和生命周期 没有要求讲解我就简单注释了一下~ #include <iostream>int main(){ for (int i=0;i<10;i++ ...

  9. Smarty模板引擎技术

    Smarty模板引擎技术 什么是模板引擎? 什么是Smarty模板引擎? 为何选择Smarty模板引擎? 如何使用Smarty模板引擎? 一.历史背景 场景一:回顾之前编写PHP项目的方式 //链接数 ...

随机推荐

  1. jQuery 遮盖层弹出后禁止页面滚动

    css部分 .ovfHiden{     overflow: hidden;     height: 100%; }     js部分 $(".btn1").click(funct ...

  2. Java向数据库中一次性插入大量数据

    String sql = “insert into username.tablename(id) values(?)”; PreparedStatement stmt = conn.prepareSt ...

  3. Yii 之components

    当我们创建一个module的时候,对应的path alias就已经创建.比如我们定义了一个module: www 1 2 3 4 5 'modules'=>array(     'www'=&g ...

  4. Checkpoint not complete

    Checkpoint not complete Current log# 2 seq# 876 mem# 0: +DATA/tykfdb/onlinelog/group_2.258.983586883 ...

  5. 使用catsup快速建立个人博客

    一.安装 time: 2016-01-2 20:30 1.使用pip安装catsup:(sudo) pip install catsup 从旧版本升级到新版本:(sudo) pip install c ...

  6. ArcGIS Server集群布署

    ArcGIS Server集群布署 准备如下的4台机器: 计算机名 IP 布署软件 说明 VMWIN2008ENSS1 192.168.1.111 ArcGIS for Server   VMWIN2 ...

  7. JAVA 分布式 - 分布式介绍

    什么是分布式系统? 要理解分布式系统,主要需要明白一下2个方面: 1.分布式系统一定是由多个节点组成的系统. 其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的. 2.这些连通的节点 ...

  8. GoldenGate搭建与运维

    GolenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库实时 ...

  9. NSOperation的使用细节 [2]

    NSOperation的使用细节 [2] 这一节我们来写自定义nonconcurrent的operation,自定义nonconcurrent的operation很简单,重写main方法,之后处理好c ...

  10. [翻译] JTCalendar

    JTCalendar JTCalendar is a calendar control for iOS easily customizable. JTCalendar 是一个很容易定制的日历的控件. ...