2024.3.27

正则表达式regex是什么

是文本在执行搜索,匹配的过程中所遵循的格式
不能随意添加空格,因为所有式子都紧密相连
同样的,因为在python里也存在转义,所以一般都会用r前缀使字符串变为原始字符串,这样转义字符就被保留而不是被吞掉
它本身代表了一个规则

要注意区分转义符号****/,前者一般用于转义各种标点符号和用来引导特殊匹配,后者一般是一些硬盘地址,网址
一个记法就是
**|**键盘上是一个键,或来转义
练习网站:https://regexr-cn.com/

元字符

就是正则表达式里面的有特殊含义的符号

.点运算符
在python里可以是看作操作方法与类的链接符,但是在正则表达式里,它可以被视为任意一个字符,可以匹配任何单个字符,除了换行符
它什么字符都可以是

.wc就匹配一个第一位任意,二三位为wc的字符串-------pwc owc @wc >wc等都可以
在这里插入图片描述

字符集[]
将[]内的字符看作一个整体,可以是整个整体内的任意一个字符

***[abc][0-9]*前一个表示可以匹配abc中的任意一个,后一个表示可以匹配0到9中的任意一个
比如-----a1 c5 a9 b3都可以匹配
这里的连接符
-前面要按照编码顺序的先后[0-9]合法,而[9-0]就不合法
在这里插入图片描述
在合法的字符集内是不分先后顺序的[abcdefg]和[abdcfge]是等价的
在这里插入图片描述在这里插入图片描述
要注意的是,整个[]表示一个字符,而且里面默认就是字符,在[]里面
.**就是点字符本身,不再代表任意字符
在这里插入图片描述
否定字符集^
^有两种用法,这里先介绍其中一种
当^在[]开头使用时,它表示否定这个字符集内的字符
[ ^ a-u ]表示它匹配除了a-u以外的任意字符
在这里插入图片描述

正数次运算符+
匹配在+之前的字符出现一次及以上
这个+之前怎么框定呢,可以用[],只要[]内只有一个字符,就和没有[]没有区别还限定了范围
在这里插入图片描述
在这里插入图片描述
可以没有运算符*
作用和+基本相同,但是匹配时可以为零次,就是可以不出现*前的字符,可以用来匹配整数或小数(可以没有也可以有小数点)

所以*的匹配范围一般比同条件的+要广,但是可能出现—返回无穷个结果的bug

所以匹配多次一般用+不用*

可选表达符?
?还有其他作用,这里只介绍一点
就是在?前的字符可以有零个也可以有一个,同样用[]框定?前的范围
在这里插入图片描述

定次运算符{}
在{}里面可以规定重复的上下限{2,7}就是最少两次最多七次
左量不能省略,没有右量默认无限,只有一个量{3}表示重复三次
而且{}只认{}前的一个字符,想要多个字符同时重复,只能在每个字符后面都添加
在这里插入图片描述
特殊单字符匹配

\d 用于匹配任意数字,等价于[0-9]
\s 用于匹配任意空白字符,包括空格回车制表符换行符,等价于[\n\t’我是空格’]
\w 匹配任意数字大小写字母和下划线,等价于**[0-9A-Za-z_]**
大写的DSW都是表示取反的意思
\D 用于匹配任意不是数字的字符,等价于[^0-9]
\S 用于匹配任意非空白字,等价于[^\n\t’我是空格’]
\W 匹配任意不是数字大小写字母的字符和下划线,等价于[^0-9A-Za-z_]

限定匹配边界符
^ 当它不在[]里面时,表示它从字符串开头开始匹配,开头不匹配就不会返回,一般就放在整个正则表达式的开头

$ 它从字符串结尾开始匹配,结尾不匹配就不会返回,一般就放在整个正则表达式的末尾

如果^和$一起用的话,就表示整个字符串必须满足正则表达式,否则就会不匹配

\b’匹配内容’ 匹配在单词和别的字符交界的对应的匹配内容,单词限定为字母数字下划线(\w),一般用来匹配开头结尾
\b在哪边,匹配内容就在哪一边,左右各一个\b表示严格匹配单独的一个匹配内容
在这里插入图片描述

在这里插入图片描述

\B’匹配内容’ 取反,匹配在单词内部的匹配内容,左右两个表示严格匹配在单词内的匹配内容

str\Z 匹配str是否位于整个字符串结尾,如果不在结尾就匹配失败

分组匹配字符
| 逻辑或,只要左边右边任意一个匹配了就行
() ()中的内容会作为一个元组字符装在元组中
()也是分组符,先了解re模块的相关函数才好理解

标记
标记也称为修饰符,因为它会修改正则表达式的输出。这些标志可以以任意顺序或组合使用,并且是正则表达式的一部分
用法是在正则表达式最后面加上/mgi

i 不区分大小写:将匹配设置为不区分大小写。
g 全局搜索:搜索整个输入字符串中的所有匹配。
m 多行匹配:会匹配输入字符串每一行。

re模块

re,match(pattern,待比较串,flag=0)
从字符串开头开始匹配,如果开头不匹配,就直接返回None,可以省略^
如果匹配成功,返回一个match对象,可以用对应的操作取得里面匹配的值

.groups() 返回一个包含所有小组的元组
.group(num) 对应的数字表示对应的小数序号,从1开始
num不写默认是0,而0就是pattern(能用group了肯定已经匹配了)
在这里插入图片描述

re.search(pattern,待比较串,flag=0)
只和match有一点不同,就是它是搜索整个字符串,返回第一个匹配的
对返回的search对象的操作和match一样

re.sub(pattern, replace, 待替换串, count=0, flag=0)
count就是替换次数,默认是0,就是全部替换
这里的replace可以是一个函数

re.findall(pattern, string, flag=0)
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表
如果有多个匹配模式,则返回元组列表,即一个元组包含着的好几个列表
如果没有找到匹配的,则返回空列表。

匹配模式
与正则表达式里的标记要用
上述函数里都有一个flag参数,那是为正则表达模式预留的,所有的都默认为零,没有影响
要使用时直接flag=re.M就行

re.I 即标记的/i使匹配对大小写不敏感

re.M 即标记的/m多行匹配,影响 ^ 和 $,使它们匹配字符串的每一行的开头和结尾。

re.S 使 . 匹配包括换行符在内的任意字符。

re.ASCII 使 \w, \W, \b, \B, \d, \D, \s, \S 仅匹配 ASCII 字符。

re.X 忽略空格和注释,可以更清晰地组织复杂的正则表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值