正则表达式的应用领域及基本语法解析
目录
一、正则表达式的应用领域
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注解,发现…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
