正则表达式---【Python版】

目录

前言

一.正则表达式概括

1.1简介

1.2使用场景

二.正则表达式语法

2.1基本匹配

2.2元字符

2.2.1点运算符.

2.2.2字符类\[\]

2.2.3否定字符类

2.2.4*号

2.2.5+号

2.2.6?号

2.2.7{}号

2.2.8()号

2.2.9|或运算

[2.2.10转码特殊字符\](#2.2.10转码特殊字符)

[2.2.11^和](#2.2.11^和)

2.3简写字符

前言

一个正则表达式在线练习网站:

练习网站

学习正则表达式,一定要多加练习,效率翻倍!

一.正则表达式概括

1.1简介

正则表达式 是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子,正则表达式 常用缩写是:"regex"、"regexp"

例如:寻找"T "开头的英文单词

1.2使用场景

使用正则表达式 可以很方便的帮我们在大量"字符串 "中搜寻到我们想要的信息,如果我们爬取某个网站的HTML ,需要当中的某个信息,可以使用正则表达式搜寻

再比如某些算法题 牵扯到字符串 ,我们也可以使用正则表达式来匹配

二.正则表达式语法

2.1基本匹配

基本匹配很简单,比如我们就需要"the"这个单词,那么写下即可:

因此基本匹配 ,多用于我们需要一个"固定且唯一"的结果

2.2元字符

如果我们需要匹配动态变化的字符串,就需要用到元字符

而正则表达式也主要依赖于"元字符"实现复杂匹配

元字符介绍:

元字符 描述
. 句号匹配任意单个字符
\[\] 字符种类,匹配方括号内的任意字符
\^ 否定的字符种类,匹配除了方括号内字符的任意字符
* 匹配**>=0**个的重复的在*号前的字符
+ 匹配**>=**1个的的重复的在+号前的字符
? 标记**?**之前的字符为可选匹配或不匹配
{n,m} 控制匹配数量,匹配num个大括号之前的字符或字符集(n<=num<=m)
(xyz) 字符集,匹配与xyz完全相同的字符串
| 或运算符,匹配符号前或后的字符
\ 转义字符,匹配一些保留字符如"\[\]"、"()"、"+"、"?"等
^ 从开头向末尾匹配
$ 从末尾向前匹配

下面开始依次介绍"13 "种元字符

2.2.1点运算符.

. 是元字符中最简单的元字符,.匹配任意单个字符,但不匹配换号符

如".he "用于匹配:"任意一个字符后跟着he"的字符串

2.2.2字符类\[\]

字符类 \[\]也叫字符集 ,在方括号中的"连字符"来指定字符集的范围,在方括号中的字符不关心顺序 ,如果某个字符在字符集中出现 过,那么该字符就会被匹配到,相当于编程中的如下伪代码

if s in 字符类:

s is a target

注意:如果在字符类中出现".",则此时表示匹配"."号,而不是任意一个字符,这是因为字符类的优先级大于"."点元字符!!

2.2.3否定字符类

匹配除了方括号 内字符的任意字符,一般"^ "放在句子开头,用于表示这个字符类是否定的

2.2.4*号

*号匹配在*之前出现大于等于0次的字符,也就是说使用*号可以匹配没有出现过的字符!!

可以看到"the "、"he "都被匹配到了,因为"t "此时可以出现一次出现多次都是符合要求的!!

使用"."和"*"搭配,可以匹配所有的字符串

2.2.5+号

+ 号匹配**+** 号之前字符出现大于等于 1次,也就是前面的字符至少出现一次!

2.2.6?号

号表示在字符前面的字符为可选,即"出现1次 "或"出现0次 ",这与"* "号是有区别的,"* "号是"出现0次 "或"出现n次"

2.2.7{}号

{} 是一个范围量词,用来限定一个字符一个字符集 可以重复出现的次数

{}内可以是一个"固定值",用来表示出现固定次数

也可以是一个n,m的区间,用来表示出现n,m次的都可以

固定值:

范围区间:

2.2.8()号

() 号用于固定 一组字符集,表示**()** 内的字符串是一个整体 ,匹配时应按照整体进行匹配

2.2.9|或运算

或运算符 是一个判断条件 ,只需要|运算符两边有一个满足条件 就可以匹配,同时遵循编程语言中的"短路效应"

2.2.10转码特殊字符\

反斜线\在表达式中用于转码紧跟其后的字符,使后面的字符失去元字符的作用,成为一个待匹配的普通字符

(\s表示空格)

2.2.11^和$

^表示在字符串开头匹配,而&表示在字符串结尾匹配

不使用**^和$**时:

使用^后:

使用$后:

可以看到"$"和"^"只返回匹配到的第一个结果

2.3简写字符集

正则表达式提供了一些简写的字符集 ,用来帮助我们简化书写

简写字符集 描述
. 除换行符以外的所有字符
\w 匹配所有字母数字,等同于a-zA-Z0-9
\W 匹配所有非字母数字,等同于\^a-zA-Z0-9
\d 匹配数字:0-9
\D 匹配非数字:\^0-9
\s 匹配所有空格字符:\\t\\n\\f\\r\\p
\S 匹配所有非空格字符:\^\\t\\n\\f\\r\\p
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
\v 匹配一个垂直制表符
\p 匹配\r\n相当于dos终止符

记忆方法:"小写的如s、d、w "表示所有,"大写的如S、D、W "表示所有非

"w" 即:"word"简写

"d"即:"digit"简写

"s"即:"space"简写

相关推荐
2301_781833521 天前
Python 正则表达式入门教程
开发语言·python·正则表达式
五阿哥永琪1 天前
正则表达式
数据库·mysql·正则表达式
小森林之主1 天前
深入正则表达式:核心语法与实战剖析
javascript·python·正则表达式·编程技巧·字符串处理
小森林之主1 天前
JavaScript 正则表达式:从零开始的实战对比
javascript·正则表达式·前端开发·性能对比·文本处理
不吃土豆的马铃薯1 天前
C++ 正则表达式入门详解
linux·服务器·网络·数据库·c++·正则表达式
二月夜4 天前
剖析Java正则表达式回溯问题
java·正则表达式
小林ixn5 天前
从拼多多手机号验证到模板引擎:深入正则表达式与 JS 字符串处理
开发语言·javascript·正则表达式
水木流年追梦6 天前
大模型入门-大模型优化方法12-YaRN 长文本外推技术
人工智能·分布式·算法·正则表达式·prompt
水木流年追梦6 天前
大模型入门-大模型优化方法13- MTP 多 token 输出、DCA 双块注意力
人工智能·分布式·算法·正则表达式·prompt
YHHLAI7 天前
[特殊字符] 拼多多大厂笔试题——正则表达式
正则表达式