正则表达式:正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

#include<regex>

基本类型

basic_regex

typedef basic_regex<char>     regex;
typedef basic_regex<wchar_t>  wregex; //用于wstring匹配

basic_regex实例化

std::regex("/bed/\\d{1,3}");  //两个反斜杠是因为字符串的\会先转义

构造函数中还有一个默认参数flags,默认值为 std::regex::ECMAScript,该参数可以用来设置正则表达式所采用的语法。还可以设置 case insensitive

std::regex ninth ("/bed/\\d{1,3}", ECMAScript | icase );//忽略大小写

匹配结果

match_results是一种 container-like 的模板类,用于存放对目标串执行完 regex matching 操作后匹配到的结果,其中的每个元素(即每个匹配结果)是一个 sub_match 的实例化对象。

typedef match_results<const char*> cmatch;
typedef match_results<const wchar_t*> wcmatch;
typedef match_results<string::const_iterator> smatch;
typedef match_results<wstring::const_iterator> wsmatch;

根据一次匹配的结果,match_results 可能为空也可能不空,使用match_results::empty()来判空,使用match_results::size()来获取元素个数。对于一个不空的 match_results 对象,其第一个 sub_match 元素([0])对应着整个完整匹配,后续的元素对应着正则表达式中的 sub-match

res[0]: abc def  //总共匹配到两个
res[1]: abc
res[2]: def

sub_match对象存储的不是匹配到的字符串本身,而是指向这个串开始(initial)和结束后一个字符(past-the-end)的 bidirectional iterators,但是它们表现起来类似于一个字符串

成员函数 length返回字符串长度;
compare用于和一个字符串或另一个 sub_match 对象比较,相等则返回0,不等则:若它比参数小(字典序)返回一个负值,否则返回一个正值;
str返回对应的字符串。
match_result对应的四种实例化方式

typedef sub_match<const char*> csub_match;
typedef sub_match<const wchar_t*> wcsub_match;
typedef sub_match<string::const_iterator> ssub_match;
typedef sub_match<wstring::const_iterator> wssub_match;

正则操作

regex_match:全文匹配,要求整个字符串符合正则表达式的匹配规则。返回bool类型。

bool regex_match(str,regex,flags);

regex_search:搜索匹配,根据正则表达式来搜索字符串中是否存在符合规则的子字符串。

bool regex_search(str, smatch, regex);

regex_replace:替换匹配,即可以将符合匹配规则的子字符串替换为其他字符串。

std::string::iterator regex_replace(str, regex, fmt, flags); //fmt 替换的文本

c++正则表达式regex相关推荐

  1. python正则表达regex_Python 正则表达式(RegEx)

    版权所有,未经许可,禁止转载 正则表达式是组成搜索模式的字符序列. 正则表达式用于按指定的搜索模式搜索字符串. 正则表达式(RegEx)模块 Python有一个名为re的内置包,用来处理正则表达式. ...

  2. c++ regex 替换汉字_C++ - 正则表达式(regex) 替换(replace) 的 详解 及 代码

    正则表达式(regex) 替换(replace) 的 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/1732163 ...

  3. Java中的正则表达式 regex

    常用类解析:正则表达式 regex 前言 一.正则表达式 二.匹配规则 三.匹配任意字符 四.匹配数字 五.匹配常用字符 六.匹配空格字符 七.匹配非数字 八.重复匹配 九.正则表达式小总结 十.匹配 ...

  4. c#中regex的命名空间_C#_详解C#正则表达式Regex常用匹配,使用Regex类需要引用命名空间 - phpStudy...

    详解C#正则表达式Regex常用匹配 使用Regex类需要引用命名空间:using System.Text.RegularExpressions; 一.利用Regex类实现验证 示例1:注释的代码所起 ...

  5. C# 正则表达式 Regex类的使用

    1.检验数字的表达式 //数字Regex reg = new Regex(@"^[0-9]*$");//n位的数字Regex reg = new Regex(@"^\d{ ...

  6. Python零基础速成班-第13讲-Python正则表达式Regex

    Python零基础速成班-第13讲-Python正则表达式Regex 学习目标 正则表达式 课后作业(4必做) 友情提示:将下文中代码拷贝到JupyterNotebook中直接执行即可,部分代码需要连 ...

  7. python正则表达式——regex模块

    目录 1. 为了与re模块兼容,此模块具有2个行为 2. Unicode中不区分大小写的匹配:Case-insensitive matches 3. Flags 4. 组 5. 其他功能,如下表 参考 ...

  8. (四)boost库之正则表达式regex

    正则表达式可以为我们带来极大的方便,有了它,再也不用为此烦恼 头文件: #include <boost/regex.hpp> 1.完全匹配 std::string str("ab ...

  9. C语言正则表达式regex

    From: http://hi.baidu.com/david_jlu/blog/item/87ada1dbb9af6a60d0164eda.html 正则表达式在linux下应用非常广泛,经常使用s ...

  10. Boost学习之正则表达式--regex

    来源:http://blog.chinaunix.net/uid-21222282-id-1829265.html 来源:http://www.cnblogs.com/undermoon/archiv ...

最新文章

  1. 04-dispatch_group
  2. qt布局中listwidget 保持固定宽度_UI设计中响应式设计实用技巧
  3. 网页布局(固定与不固定原理)
  4. hdu 1026 Ignatius and the Princess I(优先队列+bfs+记录路径)
  5. python新手如何度过小白期,不再当菜鸟程序员?
  6. 分布式 虚拟时间和虚拟同步_分布式虚拟跟踪
  7. 聊聊有哪些参与项目的好途径吧
  8. android 自定义 滑动删除,Android_Android ListView实现仿iPhone实现左滑删除按钮的简单实例,需要自定义ListView。这里就交Fl - phpStudy...
  9. 【气动学】基于matlab GUI弹道仿真【含Matlab源码 1136期】
  10. idea主题下载导入工具
  11. pdf两页合并一页,身份证两页合并到一页
  12. javaweb项目实训总结_JAVA WEB实训总结
  13. C语言实现乘法原理,伽罗华乘法原理与C语言实现
  14. Java---XML的解析(1)-DOM解析
  15. linux 获取文件名的后缀名,linux shell 取文件名后缀
  16. oracle 12c新特性 FETCH FIRST、WITH TIES 关键字详解
  17. 笔记本电脑怎么给别人开热点
  18. Flask框架:创建app对象
  19. 超级简单的Python爬虫教程,python爬虫菜鸟教程官网
  20. 利用ECharts在线生成图表

热门文章

  1. Linux中断机制(二)
  2. 高通平台修改msm8916_defconfig
  3. datax(二)datax on azkaban架构设计之datax as a service
  4. 冰河在大学是如何度过的?
  5. jpress连接不上mysql_JPress安装部署超详细文档
  6. Exp9 Web安全基础 20164302 王一帆
  7. mysql不能使用 mysql -u root -p 启动报错解决
  8. echarts按照时间显示柱状图_Echarts制作时间柱形离散分布图
  9. Python-身体质量指数BMI
  10. 微信扫描自定义二维码关注公众号