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. Hackerrank GCD Product(莫比乌斯反演)

    题意 题目链接 Sol 一道咕咕咕了好长时间的题 题解可以看这里 #include<bits/stdc++.h> #define LL long long using namespace ...

  2. 为样式找到应用目标-CSS选择器

    1,常用选择器:元素(标签/简单)选择器.ID选择器.类选择器.后代选择器(可以将类或者ID应用于它们的祖先,然后使用后代选择器来定位) 2,伪类:有时候,我们需要根据文档结构之外的其他条件对元素应用 ...

  3. javascript的继承实现

    javascript虽然是一门面向对象的语言,但是它的继承机制从一开始设计的时候就不同于传统的其他面向对象语言,是基于原型的继承机制,但是在这种机制下,继承依然有一些不同的实现方式. 方法一:类式继承 ...

  4. Eclips 快捷键设置

  5. 2cmd 窗口 javac 错误:编码GBK的不可映射字符

    错误截图: 解决办法:第一步 第二步:

  6. LeetCode题解之Reverse Bits

    1.题目描述 2.题目分析 使用bitset 类的方法 3.代码 uint32_t reverseBits(uint32_t n) { bitset<> b(n); string b_s ...

  7. Bootstrap框架。

    什么是 Bootstrap Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更 ...

  8. python文本文件处理和用户输入

    #用户输入 a = input('please input: ') #这个输入什么即是什么,比如输入1,则a变量=1,输入'abc',则a变量 = 'abc',输入abc则报错,因为会把abc当做一个 ...

  9. [翻译] SIAlertView

    SIAlertView https://github.com/Sumi-Interactive/SIAlertView An UIAlertView replacement with block sy ...

  10. [转] iOS文字排版(CoreText)那些事儿

    文章转载自 http://www.cocoachina.com/applenews/devnews/2014/0521/8504.html iOS文字排版(CoreText)那些事儿 转自阿毛的蛋疼地 ...