正则表达式的应用领域及基本语法解析
目录
一、正则表达式的应用领域
1. 文本搜索和替换
2. 表单验证
3. 数据提取和分析
4. 数据清洗和处理
5. URL路由和路由匹配
二、正则表达式的基本语法
1. 字符匹配
2. 元字符和字符类
3. 量词和边界
4. 分组和捕获
5. 转义字符
三、常见正则表达式示例
1. 邮箱验证
2. 手机号码提取
3. URL路由匹配
正则表达式是一种强大的文本处理工具,常用于字符串模式匹配和替换。它的应用领域广泛,从文本编辑、编程开发到数据分析,都可以看到正则表达式的身影。
一、正则表达式的应用领域
1. 文本搜索和替换
在文本编辑器、编程语言或命令行中,我们经常需要进行字符串匹配和替换操作。使用正则表达式,我们可以快速地找到符合特定模式的字符串,并进行相应的替换。例如,在文本编辑器中使用正则表达式查找所有的电子邮件地址,并将其替换为其他内容。
2. 表单验证
在Web开发中,我们经常需要验证用户输入的数据是否符合特定的格式要求,如电子邮件地址、手机号码等。使用正则表达式,我们可以轻松实现这些验证规则,确保用户输入的数据符合我们的要求。
3. 数据提取和分析
正则表达式可以从文本中提取特定信息,如抓取网页中的链接或提取日志文件中的关键信息。此外,在数据分析中,正则表达式也可以用于从原始数据中提取有用的信息,如从日志文件中提取错误信息等。
4. 数据清洗和处理
在处理大量文本数据时,我们经常需要对数据进行筛选、过滤和清理。使用正则表达式,我们可以轻松地删除无关内容、替换错误数据或者格式化文本等。
5. URL路由和路由匹配
在Web开发中,我们可以使用正则表达式来定义URL路由规则和进行路由匹配。例如,使用正则表达式匹配不同的URL路径,并将请求转发给相应的处理程序。
二、正则表达式的基本语法
1. 字符匹配
使用普通字符直接匹配,例如匹配字符串 "hello"。
示例代码:
// 匹配字符串 "hello"
regex pattern = regex("hello");
bool isMatch = regex_match("hello world", pattern);
2. 元字符和字符类
使用元字符(如\d、\w、\s等)和字符类(如[]、[^]等)匹配不同类型的字符。例如,使用\d匹配数字,使用[a-z]匹配小写字母。
示例代码:
// 匹配一个数字
regex pattern = regex("\\d");
bool isMatch = regex_match("123", pattern);// 匹配一个字母或数字
regex pattern = regex("[a-zA-Z0-9]");
bool isMatch = regex_match("A", pattern);
3. 量词和边界
使用量词(如*、+、?等)和边界(如^、等)控制字符出现次数和位置。例如,使用∗匹配重复字符,使用和匹配字符串的开头和结尾。
示例代码:
// 匹配一个或多个数字
regex pattern = regex("\\d+");
bool isMatch = regex_match("123", pattern);// 匹配以 "hello" 开头的字符串
regex pattern = regex("^hello");
bool isMatch = regex_match("hello world", pattern);
4. 分组和捕获
使用括号()进行分组,并通过捕获组提取匹配到的内容。例如,使用(\d+)提取一个或多个数字。
示例代码:
// 提取出时间格式中的小时和分钟
regex pattern = regex("(\\d{2}):(\\d{2})");
smatch matches;
if (regex_search("The time is 09:30.", matches, pattern)) {cout << matches.str(1) << ":" << matches.str(2) << endl;
}
5. 转义字符
使用反斜杠\来转义特殊字符,例如匹配正则表达式中的元字符本身。例如,使用.匹配实际的句号字符。
示例代码:
// 匹配包含 "." 的字符串
regex pattern = regex("\\.");
bool isMatch = regex_match("example.com", pattern);
三、常见正则表达式示例
这里有一些常见的正则表达式示例:
1. 邮箱验证
以下正则表达式可以用来验证一个字符串是否符合邮箱的格式:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
这个正则表达式会匹配以一个或多个字母数字字符(包括一些特殊字符,如点、百分号等)开始,然后是“@”符号,接着是另一个或多个字母数字字符(包括一些特殊字符,如点、减号等),最后是点号和一个或多个字母字符的字符串。
2. 手机号码提取
以下正则表达式可以用来从文本中提取手机号码:
1[3456789]\d{9}
这个正则表达式会匹配以数字1开始,第二位为3、4、5、6、7、8、9中的一个数字,然后是9个数字的字符串。例如,它会匹配13812345678这样的手机号码。
3. URL路由匹配
以下正则表达式可以用来匹配URL路径:
^/api/(\w+)/(\w+)$
这个正则表达式会匹配以“/api/”开始,然后是两个单词字符(\w+),然后是“/”符号,最后是另一个单词字符的字符串。例如,它会匹配“/api/users/123”,其中“users”和“123”是被捕获的组。
相关文章:
正则表达式的应用领域及基本语法解析
目录 一、正则表达式的应用领域 1. 文本搜索和替换 2. 表单验证 3. 数据提取和分析 4. 数据清洗和处理 5. URL路由和路由匹配 二、正则表达式的基本语法 1. 字符匹配 2. 元字符和字符类 3. 量词和边界 4. 分组和捕获 5. 转义字符 三、常见正则表达式示例 1. 邮箱…...

CIP或者EtherNET/IP中的PATH是什么含义?
目录 SegmentPATH举例 最近在学习EtherNET/IP,PATH不太明白,翻了翻规范,在这里记个笔记。下面的叙述可能是中英混合,有一些是规范中的原文我直接搬过来的。我翻译的不准确。 Segment PATH是CIP Segment中的一个分类。要了解PATH…...
使用lombok进行bulider之后调取HashMap的自定义方法进行对象操作报空指针异常(pojo也适用)
概论 这主要的问题就是bulider的特性的问题,就是他只能给你搭建了一个脚手架,里面的东西其实他没动你的,你得自己去给他实体化,如果你使用了类似HashMap等集合的话,你得自己去bulid一个在那个里面作为初始化对象你才可…...

矩阵-day14
...

上古神器:十六位应用程序 Debug 的基本使用
文章目录 参考环境上古神器 DebugBug 与 DebuggingDebugDebug 应用程序淘汰原因使用限制 DOSBox学习 Debug 的必要性DOSBox-X Debug 的基本使用命令 R查看寄存器的状态修改寄存器的内容 命令 D显示内存中的数据指定起始内存空间地址指定内存空间的范围 命令 A使用命令语法错误查…...

[学习笔记]ARXML - Data Format
参考AUTOSAR文档: https://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_ARXMLSerializationRules.pdfhttps://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_ARXMLSerializationRules.pdf 编码 arxml只允许使用UTF-8编码ÿ…...

Go_原子操作和锁
原子操作和锁 本文先探究并发问题,再探究锁和原子操作解决问题的方式,最后进行对比。 并发问题 首先,我们看一下程序 num该程序表面看上去一步就可以运行完成,但是实际上,在计算机中是分三步运行的,如下…...

初识Java 12-1 流
目录 Java 8对流的支持 流的创建 随机数流 int类型的区间范围 generate() iterate() 流生成器 Arrays 正则表达式 本笔记参考自: 《On Java 中文版》 ||| 流的概念:流是一个与任何特定的存储机制都没有关系的元素序列。 流与对象的成批处理有关…...

【软件工程_UML—StartUML作图工具】startUML怎么画interface接口
StartUML作图工具怎么画interface接口 初试为圆形 ,点击该接口在右下角的设置中->Format->Stereotype Display->Label,即可切换到想要的样式 其他方式 在class diagram下,左侧有interface图标,先鼠标左键选择࿰…...
单片机之瑞萨RL78定时计数器
单片机之瑞萨RL78定时计数器 使用瑞萨RL78定时计数器的简单例程。这个例程使用定时器0来产生一个以秒为单位的定时器中断,并在中断服务程序中增加一个全局变量以跟踪中断的发生。 首先,我们需要了解RL78的定时器0是一个16位的定时器,它的时钟…...

手机号码格式校验:@Phone(自定义参数校验注解)
需求 新增接口 和 修改接口 中,手机号码的格式校验是普遍需要的。 在每个手机号码字段上添加正则表达式校验注解来实现校验,重复书写,容易出错;在不同的手机号码字段上,可能使用了不同的校验规则,无法有效…...

ORACLE Redo Log Buffer 重做日志缓冲区机制的设计
最近和朋友包括一些国产数据库的研发人员交流,很多程序员认为 Oracle 已经过时,开源数据库或者他们研发的国产数据库才代表数据库发展的未来。甚至在很多交流会议上拿出自家产品的某一个功能点和 Oracle 对比就觉得已经遥遥领先。 实际上数据库系统的发展…...

PWN Test_your_nc Write UP
目录 PWN 00 解题过程 总结归纳 PWN 01 解题过程 总结归纳 PWN 02 解题过程 总结归纳 PWN 03 解题过程 总结归纳 PWN 04 解题过程 总结归纳 CTF PWN 开始! 冲就完了 PWN 00 解题过程 ssh远程链连接 ssh ctfshowpwn.challenge.ctf.show -p28151 输…...

Centos7配置firewalld防火墙规则
这里写自定义目录标题 欢迎使用Markdown编辑器一、简单介绍二、特点和功能2.1、区域(Zone)2.2、运行时和永久配置2.3、服务和端口2.4、动态更新2.5、连接跟踪2.6、D-Bus接口 三、设置规则3.1、启动防火墙服务3.2、新建防火墙规则的服务,添加端…...

【新版】系统架构设计师 - 未来信息综合技术
个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 未来信息综合技术考点摘要信息物理系统CPS的体系架构CPS 的技术体系CPS应用场景 人工智能分类关键技术机器学习 机器人发展分类机器人4.0 边缘计算概念与特点边云协同安全应用场景 数字孪生关键技…...
CAD二次开发LineSegment2d
在C#的CAD二次开发中,LineSegment2d 是AutoCAD的.NET API中的一个类,用于表示二维空间中的线段。它包含了起点和终点的坐标信息,并提供了一些方法用于进行线段之间的计算和判断。 LineSegment2d 类具有以下常用属性和方法: Star…...

Linux shell编程学习笔记5:变量命名规则、变量类型、使用变量时要注意的事项
跟其他的高级开发语言一样,Linux Shell编程中使用的数据也需要保存在变量中。 Shell使用变量来控制其行为,并且可以通过更改变量值来更改Shell和其他程序的行为。 我们先来了解一下变量命令的规则、变量类型和使用变量时要注意的事项。 一、变量命名规…...

如何把word的页眉页脚改为图片
前言 亲戚A: 听说你是计算机专业? 沐风晓月: 是啊 亲戚A: 那正好,来看看我这个页眉怎么改成图片 沐风晓月: 一万匹马奔腾而过 亲戚B: 听说你是英语专业? 沐风晓月: 是啊…...
spring6-实现简易版IOC容器
手写简易版IOC容器 1、回顾Java反射2、实现Spring的IoC 我们都知道,Spring框架的IOC是基于Java反射机制实现的,下面我们先回顾一下java反射。 1、回顾Java反射 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所…...
Feign接口调用GET请求@RequestParam传参丢失
文章目录 问题现象排查解决GET加注解解决使用POST方式解决 时间戳传参失败 问题现象 项目使用的是Spring Cloud微服务,服务间调用使用的是Feign在一次服务调用时,发现GET传参丢失,没有传递过去任何参数加了RequestParam注解,发现…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...