C++11还支持正则表达式里的子表达式(也叫分组),用sub_match这个类就行了。

举个简单的例子,比如有个字符串“/id:12345/ts:987697413/user:678254”,你想提取id,就可以使用子表达式。代码片段如下:

    std::string strEx = "info=/id:12345/ts:987697413/user:678254";std::regex idRegex("id:(\\d+)/");auto itBegin = std::sregex_iterator(strEx.begin(),strEx.end(), idRegex);auto itEnd = std::sregex_iterator();std::smatch match = *itBegin;std::cout << "match.length : " << match.length() << "\n";std::cout << "entire match - " << match[0].str().c_str() << " submatch - " << match[1].str().c_str() << "\n";

在上面的代码里,smatch其实是std::match_results<std::string::const_iterator>,它代表了针对string类型的match_results,它里面保存了所有匹配到正则表达式的子串(类型为sub_match),其中索引为0的,是完整匹配到正则表达式的子串,其它的,是匹配到的子表达式的字符串结果。

对我们的代码片段,子表达式(\\d+)匹配到的数字就是12345


相关:

  • C++11 | 正则表达式(3)
  • C++11 | 正则表达式(2)
  • C++11 | 正则表达式(1)
  • C++11 | range-based for loop
  • C++11 | 自动类型推断——auto
  • C++11 | 运行时类型识别(RTTI)

转载于:https://www.cnblogs.com/hehehaha/p/6147412.html

C++11 | 正则表达式(4)相关推荐

  1. c++11正则表达式(一)——匹配模式(pattern)

    一.作用 pattern 是一个c++字符串,它作用是给出一匹配规则,去检测给定字符串是否具备这种拼接规则. 二.模式字符串的语法规则 需要插入一句题外话,在特殊元字符中会用到\,对于c/c++而言它 ...

  2. linux学习11 正则表达式与文件格式化处理

    目录 1.正则表达式简介 2.grep的一些高级选项及参数 3.基础正则表达式练习 查找特定字符串 利用[ ]查找集合字符 行首行尾字符^$ 任意一个字符与重复字符 . * 限定RE字符范围{ } 基 ...

  3. C++11 正则表达式——实例1

    该实例通过一个函数is_email_valid 来检查一个email地址是否是一个正确的格式.如果格式正确则返回true. #include <regex> #include <io ...

  4. 【正则表达式1】C++11正则表达式

    头文件 #include <regex> regex_match:整个字符串是否匹配 按 Ctrl+C 复制代码 按 Ctrl+C 复制代码 regex_match:只返回第一个匹配结果 ...

  5. 黑马程序员——11 正则表达式

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式 一.概念 符合一定规则的表达式,用于专门操作字符串,可以简化对字符串的复杂操作,主要 ...

  6. C++11正则表达式例子集合

    #include <string> #include <regex> #include <iostream> using namespace std;int tes ...

  7. [2017.11.05]正则表达式集合list

    正则表达式 1.演示: import java.util.Scanner;/*** 需求:校验一个QQ号码* 定义一个规则:1)由5到10为组成的数字* 2)不能以0开头 * 分析:* 1)键盘录入一 ...

  8. 正则表达式的顺序优先级

    前言 假设存在匹配示例:匹配a-c@或a@ 你认为正则a|(a-c)(?=\W)与(a-c)|a(?=\W)都能匹配上面的示例吗?这2个正则有什么本质区别?哪一个才是正确的写法?--这就涉及了正则表达 ...

  9. python正则表达式——re模块

    参考:python文档re --- 正则表达式操作 - Python 3.10.0 文档 目录 1.整体了解 2. 语法 3. re.match 4. re.search re.match与re.se ...

  10. 正则 指定开头结尾_Python核心知识系列:正则表达式与JSON

    1 正则表达式必知必会 1.1 简介 正则表达式:是一些用来匹配和处理文本的字符串. 正则表达式的使用场景主要以下两种情况:一是查找特定的信息(搜索),二是查找并编辑特定的信息(替换). 用模式(pa ...

最新文章

  1. 使用PostMan测试文件上传接口
  2. VS2015 编译输出的*.lib,*.dll,*.exe的区别
  3. 第六章apache目录文件的位置及作用
  4. asp.net代码中修改web.config节点
  5. 《数学之美》——第三章 个人笔记
  6. C++编译单元 内部链接 外部链接
  7. ClickHouse表引擎之Integration系列
  8. 怎么查看XP电脑服务器型号,xp怎么查看电脑配置
  9. 米斯特白帽培训讲义 工具篇 Nmap
  10. 线程的创建以及线程的本质
  11. selenium2 原理和常用api
  12. 使用sqrt函数开根号:
  13. python tkinter画布_Python tkinter Canvas画布完全攻略(超级详细)
  14. matlab矩阵赋未知数,matlab设未知数
  15. C语言生成负指数分布,泊松分布与负指数分布的关系
  16. LAPARDIN WEDLUTS Romantic Wedding LUTs 浪漫唯美婚礼电影调色预设
  17. 基于STM32采集CO2(MH-Z19C)传感器数据
  18. Python爬虫实践2,企业工商信息查询
  19. redhat enterprise 5 上安装oracle 10.2.0.1
  20. vscode 实现在行尾加分号

热门文章

  1. 简要说明python的缩进规则_关于python的缩进规则的知识点详解
  2. 使用Koa2重构博客项目
  3. golang for循环时修改自身的值
  4. easyui输入框模糊查询
  5. oracle文件名乱码,如何rename datafile name中存在乱码的数据文件
  6. SHELL脚本也要函数化
  7. 解决办法:eclipse查看安卓8.0及以上设备的LOG
  8. #!/bin/sh与#!/bin/bash有区别
  9. 纽微特纪事:傅某为何要内斗吾?各位应该注意什么?
  10. 管理感悟:需要什么样的技术文档