C++正则库

文章目录

  • 一、具有特殊意义的元字符
  • 二、正则库的使用
    • 1、字符串匹配
    • 2、字符串捕获
    • 3、字符串替换

#include<regex>
// 用来匹配(进而捕获、替换)字符串。 --- 处理字符串

一、具有特殊意义的元字符

符号意义
^匹配行的开头,也有否定(例如:[^a-z]:匹配的是非a-z的元素)
$匹配行的结尾
.匹配任意单个字符
[…]匹配[]中的任意一个字符,例如[a-z]:匹配a-z中的任意元素
(…)设定分组
\转义字符
\d匹配数字[0-9]
\D\d 取反
\w匹配字母[a-z],数字,下划线
\W\w 取反
\s匹配空白符(空格、制表符、换页符)
\S\s 取反
|逻辑或
*前面的元素重复任意次
?前面的元素重复0次或1次
+前面的元素重复1次或多次
{n}前面的元素重复n次
{n,}前面的元素重复至少n次
{n,m}前面的元素重复至少n次,至多m次
** 所有含\的元字符,在C++定义的时候都需要写成\\ **

二、正则库的使用

1、字符串匹配

bool regex_match(const char* str, regex reg);
// 满足正则标准返回true,不满足返回false

细节问题:

  • 完全匹配问题,必须所有的正则规则都满足才满足,默认是区分大小写的。(可以设置成不区分大小写)

    /******************** 区分大小写的正则匹配 
    ********************/
    string str = "iLoveyou1234";
    regex reg("[a-z0-9]+"); // 匹配最小1次的 a-z或则0-9
    ret = regex_match(str, reg);
    // 这里的ret等于false,因为str中有大写,而正则表达式是小写匹配的/******************** 不区分大小写的正则匹配 
    ********************/
    string str = "iLoveyou1234";
    regex reg("[a-z0-9]+", regex::icase); // 匹配最小1次的 a-z或则0-9, 不区分大小写
    ret = regex_match(str, reg);
    // 这里的ret等于true
    
  • 单斜杠(‘\’)要改成双斜杠

2、字符串捕获

std::smatch matches;
bool regex_match(const char* str, matches, regex reg);
// 将匹配的结果放到matches中,以()进行分组/* 第一次捕获字符串的前缀和后缀 */
matches.prefix();// 匹配当前字符串的前缀
matches.suffix();// 匹配当前字符串的后缀
/* 捕获后续满足的字符串--- 通过迭代器进行遍历smatches */
sregex_iterator pos(string.begin(), string.end(), regex);
/* 把每一部分都得到 */
sregex_token_iterator(string.begin(), string.end(), regex, flag);
// flag: 0 所有匹配到的
// flag: -1 存储所有的不匹配的
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main()
{ string str = "iloveyou1234";smatch matches;regex reg("[a-z0-9]+");regex_match(str, matches, reg);// 得到所有的匹配到的部分(按照()进行分组)for (auto& e : matches){cout << e << endl;}return 0;
}// 输出:iloveyou1234

3、字符串替换

string regex_replace(string str, regex reg, string replace_string);
// 将匹配成功的字符串替换成replace_string

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

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

相关文章

无人车之定位技术篇

无人车的定位技术是指确定无人车在世界坐标系&#xff08;一般指二维环境&#xff09;中的位置及其本身的姿态的技术。随着技术的不断发展&#xff0c;无人车的定位技术已经实现了多种方法的融合与创新。 一、主要定位技术 GPS定位 原理&#xff1a;基于全球定位系统&#x…

微观经济学速成笔记

需求的收入弹性 需求的收入弹性表示在一定的时期内消费者对某种商品的需求量的变动对于消费者收入量变动的反应程度,供给的收入弹性公式为: 永非证可eM或w-此公-可 根据商品的需求和收入弹性公式&#xff0c;可以将商品分类: em < 0的商品为劣等品(也称低档品)&#xff0c;因…

泷羽sec学习打卡-Windows基础命令2总结篇

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于windows的那些事儿-Base2 一、Windows-Base2常见的协议和端口常用的cmd命令渗透写入文件的思路&…

面经—科大讯飞

1extern c 修饰才能使用c在c中 new delete 可以自动判断分配多少空间 形成多态的两个条件&#xff0c;1.继承关系

软考教材重点内容 信息安全工程师 第1章 网络信息安全概述

第 1 章 网络信息安全概述 1.1.1 网络信息安全相关概念 狭义上的网络信息安全特指网络信息系统的各组成要素符合安全属性的要求&#xff0c;即机密性、完整性、可用性、抗抵赖性、可控性。 广义上的网络信息安全是涉及国家安全、城市安全、经济安全、社会安全、生产安全、人身安…

【51单片机】I2C总线详解 + AT24C02

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 AT24C02介绍存储器 I2C总线介绍I2C时序结构数据帧AT24C02数据帧 编程实例 —— 按键控制数据大小&存储器写入读出 AT24C02介绍 …

全球海工供应链,中国建造!第十一届全球FPSOFLNGFSRU大会在上海隆重召开

10月30日-31日&#xff0c;全球海洋工程与高端装备领域的年度国际交流盛会——第十一届全球FPSO&FLNG&FSRU大会暨海上能源全产业链博览会在上海隆重召开&#xff0c;同期举办第七届亚洲海洋风能大会。本次大会暨博览会由上海船舶工业行业协会、上海市工业合作协会、决策…

Linux网络编程——网络字节序和IP地址详解

一、网络字节序 1、大端模式和小端模式 字节序是指多字节数据的存储顺序&#xff0c;在设计计算机系统的时候&#xff0c;有两种处理内存中数据的方法&#xff1a;大端格式、小端格式。 小端格式(Little-Endian)&#xff1a;将低位字节数据存储在低地址&#xff1b; 大端格式(…

解析低代码开发在企业数字化转型中的多重优势

在数字化转型的浪潮中&#xff0c;企业面临着前所未有的机遇和挑战。为了在竞争激烈的市场中脱颖而出&#xff0c;企业需要迅速且高效地构建和更新应用程序&#xff0c;以适应不断变化的业务需求。数字化转型已不再是企业的选择&#xff0c;而是关乎生存和发展的必由之路。在这…

JMeter项目实战

目录 一、流程&#xff1a; 1.接口测试流程&#xff1a; 2.测试数据准备&#xff1a; 3.接口功能测试&#xff1a; 4.自动化测试流程&#xff1a; 5.情景压力测试分析&#xff1a; 6.生成图形化测试报告&#xff1a; 一、流程&#xff1a; 1.接口测试流程&#xff1a; …

SHARE 100M A10风力发电机动态巡检

背景 随着碳中和、碳达峰“3060”目标的提出&#xff0c;“十四五”时期乃至本世纪中叶应对气候变化工作、绿色低碳发展和生态文明建设提出了更高要求。在时代建设的背景下&#xff0c;清洁能源行业蓬勃发展&#xff0c;传统静态巡检模式与高度依赖人力的风机巡检运维手段已经无…

数据分析:宏基因组DESeq2差异分析筛选差异物种

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍原理:计算步骤:结果:加载R包准备画图主题数据链接导入数据Differential abundance (No BP vs 2BP TA)构建`countData`矩阵过滤低丰度物种构建DESeq数据对象DESeq2差异分析画图Di…

Linux进程信号(信号的产生)

目录 什么是信号&#xff1f; 信号的产生 信号产生方式1&#xff1a;键盘 前台进程 后台进程 查看信号 signal系统调用 案例 理解进程记录信号 软件层面 硬件层面 信号产生方式2:指令 信号产生方式3:系统调用 kill系统调用 案例 其他产生信号的函数调用 1.rais…

【ESP】一小时速通入门笔记

【ESP】一小时速通入门笔记 前言: 之前上学时就用过一次esp32, 当时初次使用搭建编译环境费了老大功夫.在我第一篇esp32笔记中也有说明.以至于我好像忘记记录完整的入门笔记了.最近因为工作需要又开始接触esp32才发现,现在已经方便得多了.顺利的话一小时速通. 前排提醒: 本笔记…

22.04Ubuntu---ROS2使用rclcpp编写节点C++

节点需要存在于功能包当中&#xff0c;功能包需要存在于工作空间当中。 所以我们要想创建节点&#xff0c;就要先创建一个工作空间&#xff0c;再创建功能包。 第一步&#xff1a;创建工作空间 mkdir -p chapt2_ws/src/ 第二步&#xff1a;创建example_cpp功能包&#xff0c…

QML项目实战:自定义CheckBox

目录 一.添加模块 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.4 import QtGraphicalEffects 1.15 二.自定义CheckBox 1.CheckBox设置 2.勾选框设置 3.标签部分 4. 状态变化处理 5.文本设置 三.效果 1.当enabled为true 2.当enabled为true 3.当…

【Git】Liunx环境下Git的使用:“克隆,提交,推送“

目录 一、常用参数 二、我们为什么要使用Git&#xff1f; 三、创建远程仓库 第一步&#xff1a;创建对应代码托管平台账号。 第二步&#xff1a;在托管平台创建仓库 第三步&#xff1a;完善仓库内容&#xff08;选择性使用&#xff09; 开源和私有 四、克隆远程仓库到本…

《Python网络安全项目实战》项目4 编写网络扫描程序

《Python网络安全项目实战》项目4 编写网络扫描程序 项目4 编写网络扫描程序任务4.1 扫描内网有效IP地址任务描述任务分析任务实施任务拓展 任务4.2 编写端口扫描工具任务描述任务分析任务实施相关知识任务评价任务拓展项目评价 项目4 编写网络扫描程序 许多扫描工具是由Pytho…

软件设计开发规程,制度(word原件)

技术解决方案过程包括&#xff1a; 1、选择最佳解决方案&#xff1b; 2、制定架构设计&#xff1b; 3、制定概要设计&#xff1b; 4、制定详细设计和数据库设计&#xff1b; 5、利用准则进行接口设计&#xff1b; 6、实现设计&#xff1b; 7、进行单元测试&#xff1b; 8、进行…

Spring Boot框架的知识分类技术解析

2 开发技术 2.1 VUE框架 Vue.js&#xff08;读音 /vjuː/, 类似于 view&#xff09; 是一套构建用户界面的渐进式框架。 Vue 只关注视图层&#xff0c; 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 2.2 Mysql数据库 …