正则表达式讲解

正则表达式 讲解 一 概念 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexe 阅读详情

正则表达式入门

  正则表达式一直都是我畏惧的知识点,之前也尝试着学习,但最终还是放弃了。由于正则在项目中经常能用的到,所以最近强迫自己花空闲时间学习了些简单的正则知识,并将了解到的知识总结在本文中,希望对大家有所帮助。大家在学习正则的时候不要有畏惧的心理,其实正则入门还是比较容易的。

一、简介

 正则表达式是由原意文本字符(a,b,c,1,2,3等)和元字符( . * ? 等)组成来匹配指定内容的表达式。

原意文本字符
 原意文本字符是正则中最基本的字符,比如:

  • a在正则中表示匹配a这个字符;
  • 1在正则中表示匹配1这个字符;
  • 我在正则中表示匹配我这个字符。

元字符
 指在正则表达式中有特殊含义的专用字符,比如:

  • “.”表示匹配除换行\n以外的所有字符;
  • “*”表示匹配前面的子表达式0次或多次;
  • “?”表示匹配前面的子表达式1次或多次。

 常用的元字符:

元字符含义举例
\转义字符,将后一个字符标记为特殊字符或将元字符转为原意字符1、\\表示匹配原意字符\;
2、\.表示匹配英文句号“.”;
3、\d表示匹配数字。
.匹配除换行(\n)以外的所有字符abc.能匹配到“abc”后面的那个字符,比如“abc”后面的空格、字母、数字、汉字等
^匹配字符串的开始位置,在集合([])中表示“非”1、^\d\d\d能匹配“123”、“666”等,但不能匹配“a123”、“b123”、“-123”等;
2、^\w+\b表示匹配第一个单词;
3、[^ajl]匹配除了“a”、“j”、“l”以外的任意字符。
$匹配字符串的结束位置^\d\d\.\d\d$能匹配“12.01”和“00.00”等,但不能匹配“0.00”、“12.0”、“123.00”等
?匹配前面子表达式0次或一次good?可以匹配“goo”和“good”等,但是不能匹配“go”等
+
*匹配前面子表达式0次或多次zo*能匹配“zo”、“zoo”、“zooo”
()标记一个子表达式的开始和结束位置,其结束符号“)”是元字符
[字符组的起始符号,其结束符号“]”不是元字符
{标记限定符的开始,其结束符号“}”不是元字符
|表示“或”1、a|b|c匹配“a”、“b”、“c”之中的一个;

 如果要匹配元字符本身可以用\来取消元字符的特殊含义,比如\.匹配英文句号”.”;\*匹配“*”本身;\+匹配“+”本身……


常用表达式举例

表达式含义举例
\w匹配字母、数字、下划线abc\w表示匹配“abc”开头并且后面跟着一个字母或数字或下划线的字符串
\W匹配非字母、非数字、非下划线\W相当于[^\w]
\d匹配数字\d\d\d表示匹配3个连续的数字
\D匹配非数字\D相当于[^\d]
\b匹配单词的开始或结束\bgo\w*\b表示匹配“go”开头的一个单词
\B匹配非单词的开始或结束\B相当于[^\b]
\s匹配任何空白字符,如回车、空格、制表符等\s相当于[\f\n\r\t\v]
\S匹配任何非空白字符\S相当于[^\s]
{n}匹配前面子表达式n次\d{11}表示匹配连续的11个数字
{n,m}匹配前面子表达式n到m次\d{7,11}表示匹配连续的7-11个数字
{n,}匹配前面子表达式n次以上\d{5,}表示匹配连续的5个以上的数字
[xyz]表示字符集,匹配所包含的任意一个字符1、[abc]能匹配“a”或“b”或“c”;
2、[!?*.]表示匹配“!”、“?”、“*”、“.”中的任意一个;
3、[^0-9]匹配所有非0到9的字符,相当于\D。
[a-z]表示字符范围,能匹配范围内的任意一个字符1、[a-z]能匹配26个小写字母中任意字母;
2、[0-9]能匹配0到9的任意数字,和\d一样的效果;
3、[1-9]能匹配1到9的任意数字;3、[\u4e00-\u9fa5]能匹配所有汉字。
(abc)组合,将几个项组合成为一个单元,可以对这个单元使用限定符(\.[a-z]+)+$可以匹配“.com”、“.net”、“.com.cn”等结尾的字符



运算符优先级

  正则表达式是从左向右进行运算的,并遵循优先级顺序。优先级顺序如下表(先高后低):

运算符优先权说明
\最高转义字符
() (?:) (?=) []高圆括号和方括号
* + ? {n} {n,} {n,m}中限定符
^ $ \任何元字符 任何字符低定位点和序列(即:位置和顺序)
|最低选择符“或”

二、简单使用

  了解了正则表达式的基本语法后,我们就可以牛刀小试了,好记星不如烂键盘,多敲几遍就就不容易忘记,下面我们通过实例进行学习(注:正则比较灵活,没有标准的表达式,以下所有表达式仅供参考!)。

在编写正则时可以在站长工具进行正则测试



验证(^$)是否为手机号(中国)
  分析:由于号码段在不断更新,本文只验证“13”、“15”、“17”、“18”开头后面有9个数字的号码(如表达式1),大家可以根据自己的需求灵活修改(如表达式2)。

  表达式1:^(13|15|17|18)\d{9}$
  表达式2:^(13[0-9]|15[0-9]|17[07]|18[05689])\d{8}$


验证(^$)是否为电话号码(中国)
  电话号码一般为“区号[-]号码”的格式,如果区号部分是3位则号码部分为8位,如021-67678989、02167678989;如果区号部分是4位则号码部分是7位,如0765-6767676、02167678989。

  表达式1:^\d{3}-?\d{8}|\d{4}-?\d{7}$
  表达式2:^(\d{3}-?\d{8})|(\d{4}-?\d{7})$(由于选择符“|”优先级最低,所以组合符号“()”加与不加都行)


验证(^$)是否为邮箱
  邮箱一般为“名称@域名”的格式,由于名称部分格式太多(有些邮箱名称允许有中文)不好限制,所以本文只验证名称和域名有“英文字母”、“数字”、“下划线”、“中划线(-)”、“英文句号(\.)”的邮箱。

  • \w可以匹配“英文字母、数字、下划线”
  • \.可以匹配英文句号“ . ”
  • -可以匹配原意字符“ - ”本身
  • @可以匹配原意字符“ @ ”本身
  • ([\.-]\w+)可以匹配“ photo-google ”中的“ -google ”、“ photo.google ”中的“ .google ”
  • (\.[a-zA-z0-9-]+)+可以匹配“ .com ”、“ .com.cn ”等

  表达式:^\w+([\.-]\w+)*@[\w-]+(\.[a-zA-z0-9-]+)+$


验证(^$)是否为身份证号码(中国)
  身份证号码是由18个字符组成,前17个必须为数字(\d),第一位不能为0([1-9]),最后一位可能是数字(\d)也可能是“x/X”([xX])。
  表达式:^[1-9]\d{16}[\dxX]$


匹配HTML中的a标签的链接
  a标签类似为“<a href="http://www.google.com/hk" target="_blank" >Google香港</a>”
  但是也可能会有如下等特殊的情况:

  • <a href='http://www.google.com/hk'>Google香港</a>
  • <a target="_blank" href="http://www.google.com/hk">Google香港</a>
  • <a href ="http://www.google.com/hk">Google香港</a>

  经过分析得出如下表达式:
  表达式:<a[^>]+href[\s]*=[\s]*['"]([^"']*)['"]


匹配HTML中的img标签的图片地址
  匹配img标签和匹配a标签类似,只是标签名称和资源属性不同。
  表达式:<img[^>]+src[\s]*=[\s]*['"]([^"']*)['"]

python 正则表达式去除文本中标签内容
print re.sub("<[^>]*>","",text) 输出正确结果,而 print t.replace("<[^>]*>","")不能输出正确结果

	import re
	t = "<text>jsdkjfsgn</text>" 
	print `re.sub("<[^>]*>",""`,t) 
	print t.replace("<[^>]*>","")


三、总结说明

  本文只是入门教程,让你学习完后能使用基本的表达式进行匹配。如果学习正则的时候遇到问题,可以阅读下面的“参考文档”,这些文档写的非常详细,语言也更加严谨。由于本人也是刚学正则,文章里有错误的地方欢迎大家指正。

参考文档
1、维基百科——正则表达式
2、正则表达式 - 语法
3、正则表达式30分钟入门教程

原文: https://blog.youkuaiyun.com/make164492212/article/details/51699545
正则表达式——详细讲解平衡组 这篇文章适合你吗?         要读懂这篇文章的精髓,你最好要有一点正则匹配原理的基础。比如“.*?”匹配文本内容“asp163”,稍懂正则表达式的人都知道可以匹配,但是你知道他的匹配过程吗?如果你不太清楚,那么下面的内容,对你来说可能不太适合,或许,看的太吃力且无法领悟平 阅读详情

相关推荐

Java全栈AI视频生成开发实战:从DeepSeek接入到剪映自动化(附完整源码)

【代码】Java全栈AI视频生成开发实战:从DeepSeek接入到剪映自动化(附完整源码)

weixin_39169967的博客 4145

正则表达式入门

正则表达式入门  正则表达式一直都是我畏惧的知识点,之前也尝试着学习,但最终还是放弃了。由于正则在项目中经常能用的到,所以最近强迫自己花空闲时间学习了些简单的正则知识,并将了解到的知识总结在本文中,希望对大家有所帮助。大家在学习正则的时候不要有畏惧的心理,其实正则入门还是比较容易的。一、简介 正则表达式是由原意文本字符(a,b,c,1,2,3等)和元字符( . * ? 等)组成来匹配指定内容的表达式

Samuel 3万+

LabVIEW与MySQL实时数据存储:传感器采集与数据库同步实践

本文详细介绍了如何将LabVIEW与MySQL结合,实现传感器数据的实时采集与高效存储。通过设计合理的数据库表结构、配置LabVIEW数据库连接工具包,并编写核心的采集与存储VI,构建了稳定可靠的数据链路。文章重点分享了批量插入、连接管理、时间同步等关键优化技巧与避坑指南,帮助工程师应对工业监控、环境监测等场景下的实时数据同步挑战。

weixin_29281915的博客 262

OJ题 身份证排序(C语言版)

问题描述 :   安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码从小到大进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位    解题思路: 整个思路很简单,就是把生日截取出来,先比较;生日相同的话再比较整个字符串。另外再注意一下题目要求,是从大到小还是从小到大,根据需要改变排序就行了! 找了很久没找到C语言版本,添加一个! 输入说明 :   第一行一个整数n,表示有n个身份证号码(身份证号18位,包含特殊字符X )   余下的n行,

is_yaoyao的博客 3773

华为CNA VRM搭建(使用vmware worfstartion搭建)

华为CNA和VRM在 vmware workstation安装使用

weixin_70595351的博客 1811

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1766

在线正则表达式解析器和可视化工具

在线正则表达式可视化工具 可以很方便的解析出您正则表达式的执行逻辑,帮助您快速理解!

AI的博客 7905

anaconda的conda国内加速镜像源(pytorch 快速安装)

最近清华源不太好使了,所以推荐中科大镜像源,如下 1.还原原始通道 conda config --remove-key channels 2.

qq_41719643的博客 2万+

正则表达式

<br />//正则表达式节选<br />现在你已经知道几个很有用的元字符了,如/b,.,*,还有/d.正则表达式里还有更多的元字符,比如/s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。/w匹配字母或数字或下划线或汉字等。<br />对中文/汉字的特殊处理是由.Net提供的正则表达式引擎支持的,其它环境下的具体情况请查看相关文档。<br />下面来看看更多的例子:<br />/ba/w*/b匹配以字母a开头的单词——先是某个单词开始处(/b),然后是字母a,然后是任意数量的字母或数

cdaozhi的专栏 1043

LabVIEW vs Python:谁更适合你的ATE自动化测试系统?实测对比与选型建议

本文深入对比了LabVIEW和Python在ATE自动化测试系统中的性能表现、开发效率和应用场景,帮助工程师根据实时控制需求、数据处理复杂度及团队技能做出最优选型决策。通过实测数据和典型案例,分析两者在硬件集成、系统性能和维护成本等方面的差异,并提供混合架构实施建议。

weixin_29240711的博客 277

TOPSIS与熵权法实战:从数学建模到Python实现(附国赛案例分析)

本文详细解析了TOPSIS(逼近理想解排序法)与熵权法在数学建模中的协同应用,并通过Python代码实现完整流程。文章以国赛案例为背景,从指标正向化、数据标准化、熵权法计算客观权重,到TOPSIS综合排序,手把手指导如何解决多指标决策问题,为数据分析与建模提供了一套可复用的实战工具箱。

weixin_29079643的博客 245

正则表达式解析,让你一次明白正则表达式

正则表达式是利用单个字符来描述、匹配一系列符合某个句法规则字符串的技术。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。在编程项目中,正则也常被用于文本字符串的查找、替换、切分和提取。 几乎所有的编程语言都支持正则表达式,但不同的编程语言对正则的规则和定义有所差别,本文对于正则的讨论是基于python语言的 一、五类元字符 元字符就是指那些在正则表达式中具有特殊意义的专用字符,元字符是构成正则表达式的基本元件。正则就是由一系列的元字符组成的,比如d可以表示0-9之间的任意..

weixin_44226291的博客 6298

Virtual Hard Disk version 2 (VHDX) 文件格式详解

VHDX 镜像格式详解 0. References windows github 1. Overview Microsoft 虚拟化产品中常用的映像格式是虚拟硬盘版本 2 (VHDX) 映像格式。该规范基于可用文档,并通过分析测试数据进行了增强。 VHDX 镜像格式种类 固定硬盘镜像 动态硬盘镜像 差异硬盘镜像 VHDX 镜像文件由以下元素构成: file (type) identifier 2x image headers 2x region tables log or metadata journ

圣三一 2697

Perl正则表达式讲解

9.3.1原则1 正则表达式有三种形式:匹配、替换和转换。在表 9-1 中列有三种正则表达式运算符。接下来对每一个表达式给出详尽解释。匹配:m//这种形式表明在//内部的正则表达将用于匹配 = ~或 !~左边的标量。为了语法上的简化用//,略去m。替换:s///这种形式表明正则表达式将被文本替换,为了语法的简化用//略去s。·转换:tr///这种形式包含一系列的字符

FreeXploiT 3138

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

关于正则表达式的讲解

以下内容源于《linux命令行与shell脚本编程大全【第三版】》一书的整理。

主要记录嵌入式学习与开发过程。 1527

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

正则表达式超详细讲解

正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。通俗的讲就是校验字符串是否满足规则或者在文本查找满足要求的内容。我在这里给大家举个简单的例子。如果我需要对一组qq号(字符串)进行检验,例如,要求qq号必须是6位到20位之内的,不能以0开头,还必须全是数字。按照正常来说,我需要写一个比较复杂的检测方法。像下面这个是不是看起来比较麻烦。//规则:6位及20位之内,0不能在开头,必须全部是数字//0不能在开头//必须全部是数字i++) {

2202_75481735的博客 3015

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【Linux】通俗易懂讲解-正则表达式

本文介绍了正则表达式(regex)的基础知识,将其比作"文本的超级搜索密码"。正则表达式能高效解决日志过滤、文件筛选、文本替换等场景问题,比传统方法更快捷。文章重点讲解扩展正则表达式(ERE),详细解析了元字符如.、*、+、?的匹配规则,以及字符组[]、或运算符|、分组()等核心概念。同时介绍了位置锚点^$和预定义字符类\d等实用技巧,帮助读者构建文本匹配模式,适用于Linux命令行和编程场景。

Yaoyao2024的博客 1190

正则表达式由浅到深讲解,爽!

原文地址:https://github.com/EZLippi/practical-programming-books/blob/master/src/30-minutes-to-learn-regex.md 知乎转载:https://zhuanlan.zhihu.com/p/91689180

qq_42239440的博客 218

正则表达式匹配素数的原理讲解

为什么要写这么一篇文章呢?是因为自己最近在研究和学习正则表达式,然后在RegexGolf上练习技能的时候遇到了这么一道题目,觉得很有趣。我当时虽然也解决了这个问题,但是正则表达式写的有点长,而且也只算是一种取巧的解决方案。因为如果测试用例再多一点可能我写的这个正则表达式就不能够满足需求了。 后来在复盘这道题目的解决方案的时候,查阅了很多相关的资料。发现了更简洁,更准确的答案。当我看到答案的那一瞬间,我忽然发现自己当初距离这个答案其实也不远,如果自己当时再好好研究一下,有可能就想出了更简洁的答案了。当然,也许

dreamapplehappyapple的专栏 847

Java正则表达式实例讲解

本文通过实例对Java中正则表达式的构建进行了简单介绍

new_sailor的博客 334

Python——正则表达式re讲解

关于一些常见的正则表达式应用

qq_57150526的博客 2134

由浅入深讲解正则表达式

1.     什么是正则表达式 基本说来,正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express。本文将用>来表示一段具体的正则表达式。 一段文本就是最基本的模式,简单的匹配相同的文本。   2.     不同的正则表达式引擎 正则表达式引擎是一种可以处理正则表达式的软件。通常,引擎是更大的应用程序的一部分。在软件世界,不同的正则表达

followingturing 追随图灵的路上... 910

正则表达式PPT、示例讲解

正则表达式PPT、示例讲解该部分为个人学习时的一个总结,希望与各位一起总结交流  点击下载熟悉Regex的基本语法了解高级概念如何构建、如何使用了解在C#、JavaScript中的完整实现相关技巧资料分享

WebWalker 2284

jmeter之正则表达式讲解

(正则表达式)元件功能介绍:   Apply to:(适用域、适用范围)     Main sample and sub-samples:适用范围为:(主请求和子请求)     Main sample only:适用范围为(主请求)     sub-samples only:适用范围为(子请求) 分三个层次介绍: 1. jmeter正则表达式有什么作用? 2. 正则表达式在哪? 3. 正则表达式...

He的博客 930

JavaScript正则表达式简单讲解

JavaScript正则表达式 前段时间了解了一下Perl语言,里面特别提到perl语言的一大优势就是强大的正则表达式和模式匹配功能,而JavaScript中的正则语法就是基于Perl的,刚好Perl语言的正则表达式感觉还不太熟练(我的天,细节有点多啊),来学学JavaScript的正则语法补一补吧。 什么是正则表达式? 正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式,是用于匹配字符串中字符组合的模式。 怎么创建? 使..

emmm520的博客 195

超详细正则表达式讲解

正则表达式基础(Regular Expression) 正则表达式简介 n为什么需要正则表达式? q文本的复杂处理。 n正则表达式的优势和用途? q一种强大而灵活的文本处理工具; q提供了一种紧凑的、动态的方式,能够以一种完全通用的方式来解决各种字符串处理(例如:验证、查找、替换等)问题; q大部分语言、数据库都支持正则表达式。 n正则表达式定义: q正如他的名字...

weixin_30911809的博客 490
上一篇: Selenium安装+Python测试
下一篇: 写入文件中遇到 UnicodeEncodeError: ‘gbk’ codec can’t encode character 错误的解决办法
ITYTI
博客等级 码龄10年 30粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值