正则表达式的基本语法以及技巧和示例
正则表达式(Regular Expression)是一种强大的文本模式匹配工具,它使用特定的语法规则来描述和匹配字符串。在实际应用中,正则表达式可以用于搜索、替换、验证和分割文本数据。本文将详细解释正则表达式的语法和常用的使用示例。
1. 正则表达式的基本语法
正则表达式由普通字符和特殊字符组成,用于描述匹配某种模式的字符串。下面是一些常用的正则表达式元字符和模式:
-
普通字符:普通字符包括字母、数字和标点符号,表示匹配自身。例如,正则表达式
hello
匹配字符串中的 “hello”。 -
元字符:元字符是具有特殊含义的字符,用于描述模式中的某种规则。例如,
.
表示匹配任意字符,*
表示匹配前面的字符零次或多次。 -
字符类:字符类用于指定匹配的字符集合。方括号
[ ]
用于定义字符类,其中可以列出字符、范围或字符类元字符。例如,[aeiou]
表示匹配任意一个元音字母。 -
量词:量词用于指定匹配字符出现的次数。常用的量词包括
*
(零次或多次)、+
(一次或多次)、?
(零次或一次)和{n,m}
(出现次数范围)。例如,a+
表示匹配一个或多个连续的 “a”。 -
边界匹配:边界匹配用于限定匹配的位置,常用的边界匹配元字符有
^
(匹配行的开头)和$
(匹配行的结尾)。例如,^\d{4}$
表示匹配一个由四个数字组成的字符串。
2. 正则表达式的常用功能
正则表达式具有强大的匹配和处理功能,以下是一些常用的功能:
-
匹配:正则表达式可以用来检查一个字符串是否与指定的模式完全匹配。例如,正则表达式
^abc$
只会匹配字符串 “abc”,而不会匹配 “abcd” 或 “ab”. -
查找:正则表达式可以用来查找字符串中满足特定模式的子串。通过使用元字符和模式规则,可以定位到满足匹配条件的子串。例如,正则表达式
\d{3}-\d{4}
可以用来查找形如 “123-4567” 的电话号码。 -
替换:正则表达式可以用来替换字符串中匹配的子串为指定的内容。通过使用替换函数或方法,可以将匹配到的子串替换为特定的字符串。例如,可以使用正则表达式
s/\bcat\b/dog/g
将字符串中的单词 “cat” 替换为 “dog”。 -
分割:正则表达式可以根据匹配的模式将字符串分割成多个部分。通过指定分隔符的模式,可以将字符串分割为子串列表。例如,使用正则表达式
\s+
可以将字符串按照空白字符进行分割。 -
验证:正则表达式可以用来验证输入的数据是否符合特定的格式要求。通过将输入与特定模式进行匹配,可以判断输入是否合法。例如,可以使用正则表达式
^\d{4}$
来验证一个四位数字的输入。
3. 正则表达式的技巧和示例
下面是一些常用的正则表达式技巧和示例:
-
匹配数字:
\d
表示匹配任意一个数字字符。例如,正则表达式\d+
可以匹配一个或多个数字。 -
匹配字母:
\w
表示匹配任意一个字母、数字或下划线字符。例如,正则表达式\w+
可以匹配一个或多个字母、数字或下划线。 -
匹配空白字符:
\s
表示匹配任意一个空白字符,包括空格、制表符和换行符。例如,正则表达式\s+
可以匹配一个或多个连续的空白字符。 -
匹配邮箱地址:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
可以用来验证邮箱地址的合法性。 -
匹配URL:
^(http|https)://[^\s/$.?#].[^\s]*$
可以用来匹配合法的URL地址。 -
提取手机号码:
\b1[3-9]\d{9}\b
可以用来从文本中提取手机号码。
4.正则表达式常见的例子
以下是一些常见的例子,可以帮助你更好地理解和应用正则表达式:
-
匹配日期格式:
\d{4}-\d{2}-\d{2}
可以用来匹配标准的年-月-日日期格式,例如 “2023-05-15”。 -
匹配邮箱地址:
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b
可以用来匹配合法的邮箱地址,例如 “example@email.com”。 -
匹配手机号码:
\b\d{3}-\d{4}-\d{4}\b
可以用来匹配形如 “123-4567-8901” 的手机号码。 -
提取HTML标签中的内容:
<(\w+)>.*?</\1>
可以用来匹配并提取HTML标签中的内容。例如,对于<p>Hello, World!</p>
,可以提取出 “Hello, World!”。 -
匹配IP地址:
\b(?:\d{1,3}\.){3}\d{1,3}\b
可以用来匹配合法的IP地址,例如 “192.168.0.1”。 -
匹配URL:
https?://(?:[-\w]+\.)+[a-zA-Z]{2,}(?:/[^?\s]*)?
可以用来匹配合法的URL地址,包括 “http://” 或 “https://” 开头。 -
匹配整数或浮点数:
[-+]?\d+(\.\d+)?
可以用来匹配整数或浮点数,例如 “10”、“-3.14”。 -
匹配包含特定单词的句子:
\b(?:I|You|He|She)\b.*?\b(?:like|love|hate)\b.*?\b(?:apples|bananas|oranges)\b
可以用来匹配包含指定单词的句子,例如 “I love apples”。 -
匹配英文单词:
\b[A-Za-z]+\b
可以用来匹配由字母组成的英文单词。 -
匹配数字:
\b\d+\b
可以用来匹配一个或多个数字。 -
匹配电话号码:
\b\d{3}-\d{3}-\d{4}\b
可以用来匹配形如 “123-456-7890” 的电话号码。 -
匹配邮政编码:
\b\d{5}\b
可以用来匹配5位数字的邮政编码。 -
匹配用户名:
\b[A-Za-z][A-Za-z0-9_]{5,15}\b
可以用来匹配合法的用户名,以字母开头,包含字母、数字和下划线,长度在6到16个字符之间。 -
匹配时间格式:
\b\d{2}:\d{2}:\d{2}\b
可以用来匹配形如 “HH:MM:SS” 的时间格式。 -
匹配身份证号码:
\b\d{17}[\dXx]\b
可以用来匹配18位的身份证号码,最后一位可以是数字或字母X。 -
匹配中文字符:
[\u4e00-\u9fa5]
可以用来匹配任意一个中文字符。 -
匹配HTML标签:
<[^>]+>
可以用来匹配HTML标签,例如<p>
、<div>
。 -
提取URL中的参数:
(\?|&)(\w+)=(\w+)
可以用来提取URL中的参数和对应的值。
这些例子只是正则表达式的一小部分应用示例。实际上,正则表达式具有广泛的应用领域,可以根据具体的需求和匹配规则来设计和调整。在实际使用中,你可以根据具体的情况,选择适合的正则表达式,并结合具体的编程语言或工具进行使用。
希望这些例子能够帮助你更好地理解正则表达式的应用。如果有任何问题,请随时提问。
相关文章:

正则表达式的基本语法以及技巧和示例
正则表达式(Regular Expression)是一种强大的文本模式匹配工具,它使用特定的语法规则来描述和匹配字符串。在实际应用中,正则表达式可以用于搜索、替换、验证和分割文本数据。本文将详细解释正则表达式的语法和常用的使用示例。 …...

蓝牙耳机怎么挑选?小编分享2023畅销蓝牙耳机排行榜
蓝牙耳机怎么挑选?蓝牙、音质、续航、佩戴是蓝牙耳机选购时最重要的四大维度,这几年随着技术的成熟体验有了很大改善,但挑选的时候仍然要仔细对比,不然容易踩雷。小编根据销量整理了蓝牙耳机排行榜,一起看看最受消费者…...

Linux快照太有趣了!
1.首先介绍一下什么是Linux快照 VMware 的菜单栏中有虚拟机快照这个选项,形象来说快照就相当于一个备份文件,记录的是虚拟机运行到某一节点时的状态,在虚拟机的使用过程中如果发生了意外,比如系统崩溃或系统异常,此时…...

【改进粒子群优化算法】自适应惯性权重粒子群算法(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

ROS 下 激光扫描仪 YDLidar-G4 使用
环境配置: ubuntu20.04 LTS ROS noetic 编程工具:vs code,远程通过ssh访问 扫描仪:YDLidar-G4 YDLidar驱动: YDLidar SDK YDLidar ROS 功能包 此环境包含树莓派,以下过程在树莓派3B上测试通过,…...

智能边缘:数字化时代的关键战略之一
随着物联网、云计算和人工智能等技术的快速发展,智能边缘已经成为了许多企业和组织中的重要部分。智能边缘旨在将物联网设备、应用程序和数据存储集成到一个统一的、移动的计算环境中,以提高效率、降低成本并增强数据安全性。在本文中,我们将…...

EasyRecovery16中文最新版电脑数据恢复软件下载使用教程
EasyRecovery如果需要使用它来恢复数据,请注意,尤其是当需要恢复的数据文件非常重要时,建议使用软件EasyRecovery以保障数据安全。共有三个版本,分别是个人版、专业版、企业版,这三种都可以免费下载并使用,…...

什么是鉴权?这些postman鉴权方式你又知道多少?
一、什么是鉴权? 鉴权也就是身份认证,就是验证您是否有权限从服务器访问或操作相关数据。发送请求时,通常必须包含相应的检验参数以确保请求具有访问权限并返回所需数据。通俗的讲就是一个门禁,您想要进入室内,必须通过…...

最新的经典mysql面试题及答案
互联网产品必然是需要有架构的,架构包含接入层、储蓄层、逻辑处理等等,其中存储层承载着数据落地和持久化的任务,同时给逻辑处理层提供数据查询功能支持。而一提到储蓄层必然就要说数据库了,对于数据库的掌握也是软件工程师面试时…...

算法修炼之练气篇——练气十九层
博主:命运之光 专栏:算法修炼之练气篇 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的…...

记录一次Windows7操作系统渗透测试
#本文档仅用于实验,请勿用来使用恶意攻击! 《中华人民共和国网络安全法》中,恶意破坏计算机信息系统罪在第二十七条被明确规定,规定内容为: 第二十七条 任何单位和个人不得为达到破坏计算机信息系统安全的目的&#x…...

承诺协议:定义 构造
文章目录 安全性定义方案构造基于 OWP 存在性基于 DL 假设基于 OWF 存在性基于 DDH 假设 总结 安全性定义 承诺协议(Commitment Scheme)是一个两阶段的两方协议。一方是承诺者(Committer) C C C,另一方是接收者&#…...

二、easyUI中的layout(布局)组件
1.layout(布局)组件的概述 布局容器有5个区域:北、南、东、西和中间。中间区域面板是必须的,边缘的面板都是可选的。每个边缘区域面板都可以通过拖拽其边框改变大小,也可以点击折叠按钮将面板折叠起来。布局可以进行嵌…...

MySQL---聚合函数、字符串函数、数学函数、日期函数
1. 聚合函数 数据准备: create database mydb4; use mydb4;create table emp(emp_id int primary key auto_increment comment 编号,emp_name char(20) not null default comment 姓名,salary decimal(10,2) not null default 0 comment 工资,department char(20…...

边缘计算盒子有哪些?边缘计算应用场景
边缘计算(Edge Computing)是一种分布式计算模型,旨在将数据处理和计算功能从中心数据中心移到数据源附近的边缘设备上。它的目标是在接近数据生成的地方进行实时数据处理和分析,减少数据传输延迟和网络拥塞,提高应用程…...

Linux内核(十四)Input 子系统详解 IV —— 配对的input设备与input事件处理器 input_register_handle
文章目录 input_handle结构体详解配对的input设备与input事件处理器实例input核心层对驱动层和事件层之间的框架建立流程图 本文章中与input子系统相关的结构体可参考input子系统结构体解析 input函数路径:drivers/input/input.c input_handle结构体详解 input_ha…...

Vue2.x源码解析(三)
Platform 函数 Platform 函数是用于与各种浏览器和平台进行交互的函数,它为 Vue 提供了跨平台的支持,例如浏览器、Node.js 等。Platform 函数提供了一些常用的工具和配置项,例如事件的托管、资源请求和异步更新等。下面是 Platform 函数的伪…...

全面理解守护进程的基础概念,以及如何创建一个守护进程(系列文章第三篇)
前言 这个系列的文章有四篇,其目的是为了搞清楚: 进程,shell,shell进程,终端,控制终端,前台进程,后台进程,控制进程,前台进程组,后台进程组&#…...

Leetcode刷题日志5.0
目录 前言: 1.两数相加 2.无重复字符的最长子串 3.整数反转 4.删除链表的倒数第 N 个结点 前言: 今天我又来继续分享最近做的题了,现在开始进入我们快乐的刷题时间吧!(编程语言Python3.0,难度…...

母亲节:向世界上最伟大的母爱致敬
在这世间众多的亲情关系中,有一种关系无与伦比,毫不费力地凌驾于其他任何已知的地球关系之上。这种非凡的关系就是母亲与子女之间的关系。 母亲对家庭无尽的爱、奉献和忠诚使这份感情无价。为了向全球所有母亲表示敬意,母亲节在世界46个国家庆…...

Springboot +Flowable,各种历史信息如何查询(二)
一.简介 正在执行的流程信息是保存在以 ACT_RU_ 为前缀的表中,执行完毕的流程信息则保存在以 ACT_HI_ 为前缀的表中,也就是流程历史信息表。 假设有一个流程,流程图如下: 当这个流程执行完毕后,以 ACT_RU_ 为前缀的…...

DataX下载安装使用
文章目录 01.Clickhouse到HBase(Phoenix)数据导入 DataX介绍下载执行同步的组件配置数据同步查看官方读写配置样例创建Hbase和Phoenix表创建ClickHouse表写入ClickHouse测试数据编写ClickHouse2Hbase配置文件执行同步命令 拓展ClickHouse同步到MySQL配置文件 01.Clickhouse到HB…...

PCB多层板 : 磁通对消法有效控制EMC
在PCB的EMC设计考虑中,首先涉及的便是层的设置;单板的层数由电源、地的层数和信号层数组成;在产品的EMC设计中,除了元器件的选择和电路设计之外,良好的PCB设计也是一个非常重要的因素。 PCB的EMC设计的关键࿰…...

基于正点原子电机实验的pid调试助手代码解析(速度环控制)
这里写目录标题 下位机与PID调试助手传输的原理代码讲解(基于正点原子)解析数据接受和数据发送的底层函数数据接受数据帧格式环形数组以及怎么找到它的帧头位置crc校验 数据发送数据上传函数 通过前两节文章,我已经了解了基本的pid算法,现在在完成了电机…...

报表设计器Stimulsoft 2023.2提供深色主题和 Monoline 图标包
Stimulsoft Reports 是一款报告编写器,主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署,如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等,在你的应用程序中嵌入报告设计器…...

文本三剑客之——sed编辑器
sed编辑器 sed编辑器sed基础语法sed查询sed删除sed 替换sed 插入 sed编辑器 sed是文本处理工具,依赖于正则表达式,可以读取文本内容,工具指定条件对数据进行添加、删除、替换等操作,被广泛应用于shell脚本,以完成自动…...

华为OD机试真题 Java 实现【贪心的商人】【2023Q1 100分】
一、题目描述 商人经营一家店铺,有number种商品,由于仓库限制每件商品的最大持有数量是item[index],每种商品的价格在每天是item_price[item_index][day],通过对商品的买进和卖出获取利润,请给出商人在days天内能获取到的最大利润。 注:同一件商品可以反复买进和卖出;…...

《数据结构与算法C++版》实验二-链表实验
一、实验内容 实验目的 1、实现线性表的链式存储结构(链表)。 2、熟悉 C++程序的基本结构,掌握程序中的头文件、实现文件和主文件之间的 相互关系及各自的作用。 3、熟悉链表的基本操作方式,掌握链表相关操作的具体实现。 实验内容 对链式存储结构的线性表进行一些基本操作…...

【2023华为OD笔试必会25题--C语言版】《06 简单的自动曝光》——数组
本专栏收录了华为OD 2022 Q4和2023Q1笔试题目,100分类别中的出现频率最高(至少出现100次)的25道,每篇文章包括原始题目 和 我亲自编写并在Visual Studio中运行成功的C语言代码。 仅供参考、启发使用,切不可照搬、照抄,查重倒是可以过,但后面的技术面试还是会暴露的。✨✨…...

Science Advances:宋艳课题组发现经颅近红外激光刺激可提升人类工作记忆
图1. 新闻稿封面 工作记忆——在几秒钟内主动“记住”有用信息的能力——在许多高级认知活动中起着至关重要的作用。由于工作记忆能力的个体差异可以预测流体智力和广泛的认知功能,这使得提高工作记忆能力成为干预和增强的有吸引力的目标。 美国食品及药品管理局声…...