正则表达式---【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"简写

相关推荐
Patrick在香港2 小时前
Python正则表达式实战:解析和验证香港身份证、车牌、电话格式
开发语言·python·正则表达式
吴声子夜歌2 天前
正则指引——Ruby
开发语言·正则表达式·ruby
吴声子夜歌2 天前
正则指引——Golang
开发语言·golang·正则表达式
吴声子夜歌3 天前
正则指引——PHP
开发语言·正则表达式·php
吴声子夜歌5 天前
正则指引——断言
正则表达式
吴声子夜歌5 天前
正则指引——匹配原理
java·正则表达式
吴声子夜歌6 天前
正则表达式——环视
开发语言·正则表达式
吴声子夜歌7 天前
正则表达式——边界
正则表达式
营养充电站7 天前
C++23 新特性在 CLion 中的实战体验
macos·docker·jupyter·正则表达式