正则表达式的应用领域及基本语法解析
目录
一、正则表达式的应用领域
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 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
