当前位置: 首页 > news >正文

2023-4-26-C++11新特性之正则表达式



🍿*★,°*:.☆( ̄▽ ̄)/$:*.°★* 🍿

💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥
💟💟喜欢的朋友可以关注一下,下次更新不迷路💟💟
😆😆😆私聊获取个人订阅号哦,欢迎订阅共同学习😆😆😆
💖💖💖💖可以加入大家庭群聊,一起学习天天有福利💖💖💖💖





🍬本文摘要

在这里插入图片描述

经常听说大厂的面试让手写正则表达式,这篇文章给想要专门学习正则表达式怎么写的小伙伴提供的文章,建议看完例子之后,自己手敲一下正则表达式的书写,你会发现这东西还挺简单的,不难!加油学!


目录

  • 🍬本文摘要
  • 😉一、正则表达式的概念
  • 🧊文章总结



😉一、正则表达式的概念

正则表达式(Regular Expression,常简写为regex、regexp或RE)。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。C++11开始支持正则表达式。
正则表达式非常强大,具体的实现算法有差异,所以会有多种实现方式。C++11支持6种正则表达式引擎。ECMAScript 是其中支持最多元素的引擎,也是regex默认支持的引擎。

  • ECMAScript
  • basic(POSIX Basic Regular Expressions)
  • extended(POSIX Extended Regular Expressions )
  • awk(POSIX awk)
  • grep(POSIX grep )
  • egrep(POSIX grep –E)

正则表达式主要两部分构成,特殊字符和普通字符。

字符描述
\转义字符
$匹配字符行尾
*匹配前面的子表达式任意多次
+匹配前面的子表达式一次或多次
匹配前面的子表达式零次或一次
{m}匹配确定的m次
{m,}匹配至少m次
{m,n}{m,n}
.匹配任意字符
xy
[xyz]字符集合,匹配包含的任意一个字符
[^xyz]匹配未包含的任意字符
[a-z]字符范围,匹配指定范围内的任意字符
[^a-z]匹配任何不在指定范围内的任意字符
字符描述
\w匹配字母或数字或下划线,任意一个字母或数字或下划线,即AZ,az,0~9,_中任意一个
\W匹配任意不是字母、数字、下划线的字符
\s匹配任意的空白符,包括空格、制表符、换页符等空白字符的其中任意一个,与”[ \f\n\r\t\v]”等效
\S匹配任意不是空白符的字符,与”[^\f\n\r\t\v]”等效
\d匹配数字,任意一个数字,0~9中的任意一个,等效于”[0-9]”
\D匹配任意非数字的字符,等效于”[^0-9]”
\b匹配一个字边界,即字与空格间的位置,也就是单词和空格之间的位置,不匹配任何字符,如,“er\b"匹配"never"中的"er”,但不匹配"verb"中的"er"
\B非字边界匹配,“er\B"匹配"verb"中的"er”,但不匹配"never"中的"er"
\f匹配一个换页符,等价于”\x0c”和”\cL”
\n匹配一个换行符,等价于”\x0a”和”\cJ”
\r匹配一个回车符,等价于”\x0d”和”\cM”
\t匹配一个制表符,等价于”\x09”和”\cI”
\v匹配一个垂直制表符,等价于”\x0b”和”\cK”
\cx匹配”x”指示的控制字符,如,\cM匹配Control-M或回车符,”x”的值必须在”A-Z”或”a-z”之间,如果不是这样,则假定c就是"c"字符本身

regex_match

全文匹配,即要求整个字符串符合匹配规则,返回true或false

#include "iostream"
#include "regex"using namespace std;
int main() {std::string str="1111-1";cout<<std::regex_match(str,regex("\\d{4}-\\d{1,2}"))<<endl;//匹配”四个数字-一个或两个数字“,返回值为1匹配成功str="1320550505@qq.com";cout<<regex_match(str,regex("\\d{1,}@qq.com"))<<endl;//匹配”QQ邮箱“,返回值为1匹配成功return 0;
}

regex_search

搜索匹配,即搜索字符串中存在符合规则的子字符串。

#include "iostream"
#include "regex"using namespace std;
int main() {string str= "hello2019-02-03word";smatch match;regex regex1("(\\d{4})-(\\d{1,2})-(\\d{1,2})");//搜索规则()表示把内容拿出来,不加()的话只有match[0],没有[1][2][3]std::cout<<regex_search(str,match,regex1);//找到了返回1std::cout<<match[0];//2019-02-03std::cout<<match[1];//2019std::cout<<match[2];//02std::cout<<match[3];//03return 0;
}
#include "iostream"
#include "regex"using namespace std;int main() {string str = "hello2019-02-03word,hello2019-02-03word,hello2019-02-03word    ";smatch match;regex regex1("(\\d{4})-(\\d{1,2})-(\\d{1,2})");//搜索规则()表示把内容拿出来,不加()的话只有match[0],没有[1][2][3]string::const_iterator citer = str.cbegin();while (regex_search(citer, str.cend(), match, regex1)) {citer = match[0].second;//将迭代器的指针指向匹配到的字符串后面的位置for (size_t i = 1; i < match.size(); i++) {cout << match[i] << " ";//把三个括号里面的内容拿出来}cout << endl;}return 0;
}

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

#include "iostream"
#include "regex"using namespace std;int main() {string str = "hello2019-02-03word,hello2019-02-03word,hello2019-02-03word";regex regex1("-");cout << regex_replace(str, regex1, "/") << endl;//hello2019/02/03word,hello2019/02/03word,hello2019/02/03word,函数的返回值就是代替之后的结果return 0;
}

🧊文章总结

提示:这里对文章进行总结:

  本文讲了关于正则表达式的书写,自己写一遍就会发现很简单,学到就是赚到






更多好文推荐

🍸2021-4月Python 机器学习——中文新闻文本标题分类
🍹2021年4月-(计算机网络)小型校园网络模拟搭建,最全最准确版
🍺2022-10-31-基于用户的协同过滤推荐算法实现+MAE+RMSE
🍻2022-11-28-大数据可视化,特征维度大于50
🥂2023-3-9-一篇简短的文章把C++左右值关系讲的透透彻彻

上一篇
End
下一篇

相关文章:

2023-4-26-C++11新特性之正则表达式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…...

python接口自动化测试 requests库的基础使用

目录 简单介绍 Get请求 Post请求 其他类型请求 自定义headers和cookies SSL 证书验证 响应内容 获取header 获取cookies 简单介绍 requests库简单易用的HTTP库 Get请求 格式&#xff1a; requests.get(url) 注意&#xff1a;若需要传请求参数&#xff0c;可直接在 …...

Photon AI Translator 和做产品的一些思考

近 4 个月内我一直在做 Apple 平台的产品&#xff0c;虽然从使用量来说「简体中文」用户是占多数&#xff0c;但我一直有做多语言的支持&#xff1a;英语、简体中文和繁体中文。习惯上 Google 翻译的我&#xff0c;基本上在使用 Xcode 过程中也会一直在浏览器开着 Google Trans…...

IPTV系统架构的分析与研究

1 引言   IPTV业务是伴随着宽带互联网的飞速发展而兴起的一项新兴的互联网增值业务,它利用宽带互联网的基础设施&#xff0c;以家用电视机和电脑作为主要终端 &#xff0c;利用网络机顶盒(STB,Set -TopBox) &#xff0c;通过互联网协议来传送电视信号.提供包括 电视节 目在 内…...

workerman开发者必须知道的几个问题

1、windows环境限制 windows系统下workerman单个进程仅支持200个连接。 windows系统下无法使用count参数设置多进程。 windows系统下无法使用status、stop、reload、restart等命令。 windows系统下无法守护进程&#xff0c;cmd窗口关掉后服务即停止。 windows系统下无法在一个…...

golang Gin实现websocket

golang使用 Gin实现 websocket&#xff0c;这里笔者重新搭建一个项目 1、创建项目安装依赖 项目名为 go-gin-websocket 在指定文件夹下&#xff0c;新建项目文件夹 go-gin-websocket 进入项目文件夹&#xff0c;打开cmd窗口&#xff0c;在项目&#xff08;go-gin-websocket&a…...

冯·诺依曼体系结构与初始操作系统

目录 冯诺依曼体系结构 冯诺依曼体系结构图 内存 外存 网卡和磁盘 结构之间运算速度的差异 缓冲区 初始操作系统 概念 操作系统上边与下边分别有什么 从上到下依次顺序解析 用户 用户操作接口 系统调用接口 操作系统四项管理 驱动 硬件 冯诺依曼体系结构 冯诺…...

软件测试之黑盒测试的具体方法详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一.基于需求的设计方法二.等价类三.边界值四.判定表4.1 **关系**4.2 如何设计测试用例4.3 实际案例第一步第二步第三步第四步 五.正交排列5.1 什么是正交表5.2 …...

图形编辑器:历史记录设计

大家好&#xff0c;我是前端西瓜哥。今天讲一下图形编辑器如何实现历史记录&#xff0c;做到撤销重做。 其实就是版本号的更替。每个版本保存一个状态。 数据结构 要记录图形编辑器的历史记录&#xff0c;支持撤销重做功能&#xff0c;需要两个栈&#xff1a;撤销&#xff0…...

ubuntu22.04下挂载第二块硬盘

文章目录 一、查看硬盘情况二、找到nvme1n1三、挂载四、修改分区文件 一、查看硬盘情况 首先要查看一下系统识别出来的设备。也就是说&#xff0c;我希望知道&#xff0c;ubuntu到底发现了几块硬盘。用命令&#xff1a;lsblk 显示结果如下&#xff1a; 有两块硬盘&#xff1a…...

举例说明.net中in与out的作用与区别

-----作用 在 .NET 中&#xff0c;in 和 out 是用于泛型类型参数的修饰符&#xff0c;它们用于指定参数类型的协变性和逆变性。 - in 修饰符&#xff1a;表示这个泛型类型参数是协变的。也就是说&#xff0c;in 类型参数可以从较特殊的类型隐式转换为较通用的类型。例如&…...

Java常见的100道面试题(内附答案及代码示例)持续更新

什么是Java程序&#xff1f; Java程序是一组可执行的代码&#xff0c;由Java编译器编译生成&#xff0c;可以在Java虚拟机&#xff08;JVM&#xff09;上运行。 public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!&qu…...

策略设计模式知多少

目录 目标 概述 实现 目标 熟悉策略设计模式&#xff0c;了解策略设计模式的使用场景、具体实现。 概述 一、行为设计模式 行为设计模式是设计模式的一种类型。该类型的设计模式关注的重点在于对象的行为&#xff08;通信和交互&#xff09;&#xff0c;而非对象的创建方…...

第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Linux 和 macOS 系统上为非根实例启动 ISCAgent

文章目录 第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Linux 和 macOS 系统上为非根实例启动 ISCAgent在 UNIX/Linux 和 macOS 系统上为非根实例启动 ISCAgent在 Microsoft Windows 系统上启动 ISCAgent 自定义 ISCAgent 第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Li…...

嵌入式安卓开发:使用Camera2获取相机

文章目录 Camera2介绍Camera2的主要API类介绍CameraManager通过CameraManage获取Cameracharacteristics通过CameraManage获取CameraDevice从CameraDevice获取CameraCaptureSession预览效果 参考 Camera2介绍 从Android 5.0开始&#xff0c;Google 引入了一套全新的相机框架 Ca…...

阿里云g8i服务器Intel Xeon(Sapphire Rapids) Platinum 8475B

阿里云服务器ECS通用型实例规格族g8i采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器&#xff0c;3.2 GHz睿频&#xff0c;g8i实例采用阿里云全新CIPU架构&#xff0c;可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。阿里云百科分享阿里云服…...

设计模式——组件协作模式之观察者模式

文章目录 前言一、“组件协作” 模式二、Observer 观察者模式1、动机2、模式定义3、伪代码示例①、第一种方案&#xff0c;最朴素的方式②、第二种方案&#xff0c;重构使得遵循DIP原则&#xff1a;③、进一步的小优化&#xff1a;④、修改使得支持多个观察者&#xff1a; 4、结…...

观察者设计模式知多少

目录 目标 概述 实现 推设计模式 拉设计模式 被动观察者设计模式 目标 熟悉观察者设计模式&#xff0c;了解观察者设计模式的使用场景、具体实现&#xff08;包括&#xff1a;推设计模式、拉设计模式、被动观察者设计模式&#xff09;。 概述 一、行为设计模式 行为设…...

Flink之TaskManager内存解析

一、CK失败 Flink任务的checkpoint操作失败大致分为两种情况&#xff0c;ck decline和ck expire: &#xff08;1&#xff09;ck decline 发生ck decline情况时&#xff0c;我们可以通过查看JobManager.log或TaskManager.log查明具体原因。其中有一种特殊情况为ck cancel&…...

为何越来越多人不喜欢“试用期六个月”的公司?网友:感觉不靠谱

众所周知&#xff0c;任何一份工作都有试用期&#xff0c;一般是三月左右。但如果你遇到试用期达到半年的公司&#xff0c;你会不会进入&#xff1f; 近日&#xff0c;就有人遇到了此类公司&#xff0c;并对是否要进入该公司犹豫不决。他在论坛上发帖求助&#xff1a;大家是怎…...

毕设程序java高校辅导员工作管理系统 基于SpringBoot的高校学生事务协同管理平台设计与实现 基于Java的高校学工一体化服务系统开发与应用

毕设程序java高校辅导员工作管理系统95jjf711 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在高等教育持续扩张的当下&#xff0c;辅导员承担着学生日常管理和服务的重要职责&…...

雪女-斗罗大陆-造相Z-Turbo生成图像的后期处理流水线:从降噪到超分

雪女-斗罗大陆-造相Z-Turbo生成图像的后期处理流水线&#xff1a;从降噪到超分 最近用造相Z-Turbo这类模型生成动漫角色图&#xff0c;比如《斗罗大陆》里的雪女&#xff0c;效果确实挺惊艳的。但不知道你有没有发现&#xff0c;直接生成的图片有时候会有些小瑕疵&#xff0c;…...

阿摩罗识CLAUDE.md内容的一些实践总结

环境安装 pip install keystone-engine capstone unicorn 这3个工具用法极其简单&#xff0c;下面通过示例来演示其用法。 Keystone 示例 from keystone import * CODE b"INC ECX; ADD EDX, ECX" try:ks Ks(KS_ARCH_X86, KS_MODE_64)encoding, count ks.asm(CODE)…...

别再被VS2022的C11原子操作坑了!手把手教你正确配置项目属性(附原理图解)

VS2022中C11原子操作的深度解析与实战避坑指南 当你在VS2022中首次尝试使用stdatomic.h编写多线程计数器时&#xff0c;可能会遇到一堵由编译器错误堆砌而成的"高墙"。这些看似晦涩的报错信息背后&#xff0c;隐藏着微软编译器对C11标准支持的独特实现方式。本文将带…...

Turborepo monorepo:别再手动管理多包了

Turborepo monorepo&#xff1a;别再手动管理多包了 毒舌时刻这代码写得跟网红滤镜似的——仅供参考。各位前端同行&#xff0c;咱们今天聊聊 Turborepo。别告诉我你还在手动管理 monorepo&#xff0c;那感觉就像用算盘管理仓库——能管&#xff0c;但累死人。 为什么你需要 T…...

OpenCV图像拼接避坑指南:为什么你的特征点总是匹配失败?

OpenCV图像拼接避坑指南&#xff1a;为什么你的特征点总是匹配失败&#xff1f; 当你第一次尝试用OpenCV实现图像拼接时&#xff0c;可能会遇到一个令人沮丧的问题&#xff1a;明明按照教程一步步操作&#xff0c;特征点匹配的结果却惨不忍睹。要么匹配点对寥寥无几&#xff0c…...

实战应用:基于快马构建多维智能限流系统,精细化管控API访问

在构建现代Web服务时&#xff0c;API限流是保障系统稳定性的重要防线。最近我在处理一个电商平台的流量管控需求时&#xff0c;深刻体会到"rate limit exceeded"不仅是简单的错误提示&#xff0c;更是系统自我保护的关键机制。下面分享如何用InsCode(快马)平台快速搭…...

深入解析 ValueError: DataFrame 形状无法确定的三大实战解决方案

1. 从报错信息看DataFrame形状问题 第一次遇到ValueError: could not determine the shape of object type DataFrame这个错误时&#xff0c;我正急着处理一个Excel数据导入任务。当时用pd.read_excel读取文件后直接扔进PyTorch模型&#xff0c;结果程序直接罢工。这个报错字面…...

Java面试题精讲:Qwen-Image-Edit-F2P集成开发常见问题

Java面试题精讲&#xff1a;Qwen-Image-Edit-F2P集成开发常见问题 1. 引言 最近在Java技术面试中&#xff0c;我发现很多候选人在AI模型集成方面存在不少困惑。特别是像Qwen-Image-Edit-F2P这样的人脸驱动图像生成模型&#xff0c;虽然功能强大&#xff0c;但在实际Java项目集…...

国内外优秀的源码网站,程序员必备收藏

在快节奏的开发环境中&#xff0c;高效获取优质源码已成为提升开发效率的关键。无论是快速搭建项目原型、学习优秀代码架构&#xff0c;还是寻找商业级系统解决方案&#xff0c;一个可靠的源码平台能为你节省大量时间和精力。今天&#xff0c;我将为大家分享一个近期在开发者圈…...