C++之正则表达式

news/2024/5/17 10:36:15/文章来源:https://blog.csdn.net/u010378559/article/details/130486934

目录

#include
• .:换行符以外的任何字符
• […]:…字符中的任何一个
• [^…]:…字符之外的任何一个
• [[:charclass:]]:指定之字符类charclass中的一个
• \n, \t, \f, \r, \v:换行符,tab符号,还有。。。
• \xhh, \uhhh:一个十六进制字符或unicode字符
• \d, \D:一个数字,一个非数字
• \s, \S:一个空白字符,一个非空白字符
• \w, \W:一个字母,数字,下划线;不是字母,数字,下划线
• *:匹配0次或多次
• ?:0次或一次
• +:至少一次
• {n}:n次
• {n, }:至少n次
• {n, m}:至少n次,至多m次
• (…):设定分组
• \1, \2, \3:第n个分组
• ^:一行的起点
• $:一行的终点
一个正则表达式的语法是否正确是在运行时解析的

一个对象:match_results对象:
• match_results是个template,C++标准库提供了若干预定义的实例化实现:
○ smatch:匹配string
○ cmatch:匹配const char*
○ wsmatch:匹配wstring
○ wcmatch:匹配wcstring
在这里插入图片描述

• sub_match对象m[n],所有sub_match对象都派生自pair<>, first是第一个字符的位置,second成员是最末字符的下一个位置○ 一个sub_match对象m[0],表示匹配合格的所有字符○ 一个prefix(), 第一个匹配合格的字符前方所有字符○ 一个suffix(), 最后一个匹配合格的字符后方的所有字符○ size():匹配到的子对象的个数○ 捕获组可以以m[n] 访问
• match_results对象作为一个整体,提供了:○ str():§ 匹配合格的整体string,str()或str(0)§ 第n个匹配合格的substring,str(n)§ 如果不存在这样的string则返回空○ length()§ 匹配合格的整体字符串长度,length()或length(0)§ 第n个匹配合格的子字符串长度,length(n)○ position():§ 匹配合格的整体字符串的位置:position()或position(0)§ 第n个匹配合格的子字符串位置:position(n)○ begin()/cbegin()/end()/cend():可用来迭代匹配的子对象,从m[0]到m[n]

两个迭代器:
正则表达式迭代器:regex_iterator, sregex_iterator,为了注意迭代正则查找的所有匹配成果
sregex_iterator pos(data.cbegin(), data.cend(), reg);
sregex_iterator end;
for(; pos != end; ++pos){
cout << "match: " << pos->str() << endl;
cout << " tag: " << pos->str(1) << endl;
cout << "value: " << pos->str(2) << endl;
}
Regex Token Iterator:处理子序列之间的内容,特别是打算将string拆分成一个个语汇单元,regex_token_iterator<>就提供了这样的功能

三个函数:
regex_match:检验是否整个字符序列匹配某个正则表达式,,返回true
regex_search:检验是否部分字符序列匹配某个正则表达式,搜索全部,但只输出第一个匹配到的,返回true
regex_replace
2.这些函数的参数:
(seq, m, r, mft)/(seq, r, mft)
3.指定regex对象:
对象:
• regex r(re 【,f】):re可以为string,一个表示字符范围的迭代器对,一个指向空字符结尾的字符数组的指针,一个字符指针,一个计数器,一个花括号包围的字符列表,f是指出对象如何处理的标识,默认为ECMAScript
• r1=re
• r1.assign(re, f)
• r.mark_count()
• f.flags()

异常:
如果正则表达式存在错误,在运行时标准库会抛出一个类型为regex_error的异常:
• what:描述发生了什么错误
• code:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_296515.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】什么是离散化

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;人类做题的过程&#xff0c;就是个暴搜的过程&#x1f43e; 文章目录 1.引入2.思路3.模板题 1.引入 特指有序、整数的离散化。 离散化&#xff0c;本质上是一种哈希&#xff0c;它在保持原序列大小关系的前…

k8s基础4——deployment控制器、应用部署、升级、回滚、水平扩容缩容

文章目录 一、基本介绍二、应用程序生命周期2.1 部署应用2.2 应用升级2.2.1 修改YAML文件升级&#xff08;交互式&#xff09;2.2.2 命令指定镜像版本升级&#xff08;免交互式&#xff09;2.2.3 调用vim升级 2.3 滚动升级2.3.1 升级流程 2.4 应用回滚2.4.1 查看历史发布版本2.…

微服务---RabbitMQ进阶(消息可靠性,延迟队列,惰性队列,集群部署)

RabbitMQ进阶(消息可靠性,延迟队列,惰性队列,集群部署) 消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1.消息可靠性 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见…

代码随想录算法训练营第三十二天 | 利润题、覆盖范围题

122.买卖股票的最佳时机II 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;贪心算法也能解决股票问题&#xff01;LeetCode&#xff1a;122.买卖股票最佳时机II_哔哩哔哩_bilibili 状态&#xff1a;根本做不出来&#xff0c;思路太巧了。 思路 想获…

车载红外夜视「升温」

红外夜视赛道&#xff0c;正在升温。 本周&#xff0c;全球车载后视镜头部供应商Gentex宣布&#xff0c;领投以色列热成像技术初创公司ADASKY&#xff0c;后者在B轮融资中拿到了3000万美元。按照计划&#xff0c;Gentex将协助ADASKY将红外夜视技术推向汽车市场。 事实上&#x…

真题详解(归纳法)-软件设计(六十七)

真题详解(关系模型)-软件设计&#xff08;六十六)https://blog.csdn.net/ke1ying/article/details/130495791 1、2018上半年 将小阶向大阶对奇&#xff0c;尾数右移动 解析&#xff1a; 0.23 * 10的2次方 0.22 *10的3次方 第一步&#xff1a;0.023*10的3次方&#xff0c;…

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比 目录 多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 多维时序 …

【Nginx基础篇】Linux虚拟机安装nginx

目录 一、版本区别 二、编译安装 三、启动nginx 关于防火墙 四、安装成系统服务 一、版本区别 常用版本分为四大阵营 Nginx开源版 http://nginx.org/ Nginx plus 商业版 https://www.nginx.com openresty http://openresty.org/cn/ Tengine http://tengine.taobao.org/ …

mobile代码打APK包

1、安装Android SDK Android SDK 下载地址&#xff1a; http://www.androiddevtools.cn/ 下载位置 下载后解压 打开解压文件&#xff0c;点击 SDK Manager.exe 进行安装 安装组件&#xff0c;这要选 Android 8.0.0 或者以上版本 再次安装&#xff0c;发现没什么可以安装了 2…

晚唐诗人杜荀鹤及其十首古诗赏析

一、关于出身的传说 他出身寒微。曾数次赴长安应考&#xff0c;不第还山。相传他是杜牧出妾之子。他诗语言通俗、风格清新&#xff0c;后人称“杜荀鹤体”。他就是晚唐诗人杜荀鹤。 据说&#xff0c;杜牧在会昌末年任池州刺史时&#xff0c;妾程氏有孕&#xff0c;为杜妻所逐&…

详解事务模式和 Lua 脚本,带你吃透 Redis 事务

先说结论&#xff1a; Redis 的事务模式具备如下特点&#xff1a; 保证隔离性&#xff1b;无法保证持久性&#xff1b;具备了一定的原子性&#xff0c;但不支持回滚&#xff1b;一致性的概念有分歧&#xff0c;假设在一致性的核心是约束的语意下&#xff0c;Redis 的事务可以…

GUI编程(一)

1、简介 GUI的核心技术&#xff1a;Swing、 AWT 1、外观不太美观&#xff0c;组件数量偏少 2、运行需要JRE环境 为什么我们要学习&#xff1f; 组件(JTable,JList等)很多都是MVC的经典示范&#xff0c;学习也可以了解mvc架构。工作时,也有可能遇见需要维护N年前awt/swing写的…

港联证券|4连板的AI+传媒概念股火了,近5亿资金抢筹

今天&#xff0c;沪深两市共51股涨停&#xff0c;除掉10只ST股&#xff0c;合计41股涨停。别的&#xff0c;11股封板未遂&#xff0c;全体封板率为81%。 涨停战场&#xff1a;长江传媒封单量最高 从收盘涨停板封单量来看&#xff0c;长江传媒封单量最高&#xff0c;有39.96万手…

Linux 内存管理 pt.2

哈喽大家好我是咸鱼&#xff0c;在《Linux 内存管理 pt.1》中我们学习了什么是物理内存、虚拟内存&#xff0c;了解了内存映射、缺页异常等内容 那么今天我们来接着学习 Linux 内存管理中的多级页表和大页 多级页表&大页 在《Linux 内存管理 pt.1》中我们知道了内核为每…

【linux的学习与软件安装】

文章目录 linux的学习一、工具安装与联网&#xff1f;二、Linux软件安装1.安装jdk2.安装MySQL安装redis linux的学习 一、工具安装与联网&#xff1f; 1.1安装好VM后 进入vi /etc/sysconfig/network-scripts/ifcfg-ens33 然后ip addr 查看ip 1.2打开IDEA的tools 二、Linux软…

uniapp - 实现微信小程序电子签名板,横屏手写姓名签名专用写字画板(详细运行示例,一键复制开箱即用)

效果图 实现了在uniapp项目中,微信小程序平台流畅的写字签名板(也可以绘图)功能源码,复制粘贴,改改样式几分钟即可搞定! 支持自动横屏、持预览,真机运行测试非常流畅不卡顿。 基础模板 如下代码所示。 <template><view class=

Shell脚本2

自定义局部变量 :定义在一个脚本文件中的变量 只能在这个脚本文件中使用的变量&#xff0c;局部变量 语法&#xff1a; var_namevalue 变量定义规则 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头 等号两侧不能有空格 在bash环境中, 变量的默认类型都是字符串…

Softing线上研讨会 | 轻松访问XML文件中的过程数据

| 线上研讨会时间&#xff1a;2023年5月8日下午4点或晚上10点 对于传统车间的系统应用和创新的物联网解决方案而言&#xff0c;高效访问机器和流程数据至关重要。而在现有工厂中&#xff0c;过程数据通常以XML文件的形式出现。对此&#xff0c;Softing Industrial提供了一个用…

【华为OD机试 2023最新 】箱子之字形摆放(C语言题解 100%)

文章目录 题目描述输入描述输出描述备注用例题目解析C语言题目描述 有一批箱子(形式为字符串,设为str), 要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子的摆放位置。 例如:箱子ABCDEFG,空地宽度为3,摆放结果如图: 则输出结果为: AFG BE C…

2023年房地产抵押贷款研究报告

第一章 概述 房地产抵押贷款是一种以房地产为抵押品的贷款形式&#xff0c;包括个人和企业两种情况。个人房地产抵押贷款是指个人将名下房产作为抵押品向银行或其他金融机构申请贷款&#xff0c;而企业房地产抵押贷款则是指企业将自己名下的商业房产作为抵押品向金融机构申请贷…