python高级之正则表达式详解

1:什么是正则表达式
正则表达式,正则匹配式、表示式,使用一些特殊符号来匹配、查找、替换字符串文本的一种技术。
2:正则表达式的好处:
在软件开发过程中,经常会涉及到大量的关键字等各种字符串的操作,使用正则表达式能很大程度的简化开发的复杂度和开发的效率,所以在 Python 中正则表达式在字符串的查
询匹配操作中占据很重要的地位
正则表达式能很大程度的简化开发的复杂度和开发的效率
3:python为了方便使用正则表达式,专门提供了re模块
在这里插入图片描述
re.match()方法匹配的是以 xxx 开头的字符串
将结果保存到res中
使用 res.group()提取匹配结果,如果是,则返回匹配对象(Match Object),否则抛出错误
在这里插入图片描述
re.search:执行正则表达式搜索并且在搜索结束后返回所匹配到的串,只返回第一次匹配到的结果
在这里插入图片描述
re.findall:匹配所有的对象,并将匹配到的直接以一个列表的形式返回
在这里插入图片描述
re.sub: 实现查找替换
在这里插入图片描述
re.split:分割字符串,结果返回列表
在这里插入图片描述
re.finditer:返回一个迭代器 iterator,这个 iterator yield match objects.返回顺序、内容和 re.findall()相同
在这里插入图片描述

4:元字符:

==. ==# 匹配任意符号(除换行符外(\n))
在这里插入图片描述
\d # 匹配数字 digest
在这里插入图片描述
\w # 匹配所有的有效(大小写字母、数字、下划线_、各国语言符号)
在这里插入图片描述

\s # 匹配空白位 (如:空格、\t)
在这里插入图片描述
^ # 以xx开头在这里插入图片描述
其中.代表匹配除\n外任意符号,*代表匹配任意位,a.*代表a后面可以有任意符号任意多少位,也可以没有
在这里插入图片描述
$ # 以xxx结尾
下图中示例1表示匹配以2开头,中间为任意数字,以9结尾的字符串
实例3表示匹配以任意有效字符,以9结尾的字符串
在这里插入图片描述
[] # 列举 # [0123456789] <==> \d
匹配以[]中任意一位开头的字符串
在这里插入图片描述
在这里插入图片描述
5、 反义符
\D # 匹配非数字
在这里插入图片描述
\W # 匹配特殊符号
在这里插入图片描述
\S # 匹配非空白位
在这里插入图片描述
[^] # 列举反义 注意[]和[]的区别,表示不以【】内任意字符开始
在这里插入图片描述

6、转义符
在python的字符串中\是具有特殊含义的,要正常表示一个\,需要两个\来表示在正则中,\是具有特殊含义的,要正常表示一个\,需要两个\来表示,必须使用\来取消这些字符的特殊意义。
在这里插入图片描述
注意以下情况:
在这里插入图片描述
\不仅充当了正则转义,同时也充当了字符串的角色,字符串也需要转义一次,所以需要4个
在这里插入图片描述
或者在正则表达式前面加上一个r,表示对匹配的字符串不进行转义
建议这样写
在这里插入图片描述
7、位数:
* # 表示匹配任意位(可以是0位、可以是1位、可以有n位)
在这里插入图片描述
+ # 匹配至少一位(至少是1位、可以有n位)数字
在这里插入图片描述
? # 0位或者1位

{n} # 有n位
以下案例表示:匹配以1开头的,第二位是【】内任意一位,长度为9的字符串,当长度不满9位,则返回【】,超过9位只取【】内的9位,注意是从0开始
在这里插入图片描述
{n,} # 至少n位,尽可能多取,注意是从【】内从0取
{n, m} # 表示n~m这个区间范围,注意是从【】内从0取
在这里插入图片描述
8、分组(group)
在正则表达式中,使用圆括号()将正则中包裹起来,会形成正则匹配后的二次筛选
分组最大的好处就是能够形成第二次筛选
匹配()里面的值,注意findall可以直接返回匹配到的值
在这里插入图片描述
r"</?.*?>" # 匹配HTML标签
注意:分组还可以解决正则中html语法里前后匹配问题,html中才正确,但以下可见前后不一样也可以匹配
在这里插入图片描述
因此使用分组来进行限制:
其中的<\1>表示匹配前面<(\w+)>中第一个括号中的字母
在这里插入图片描述
9、贪婪模式和非贪婪(懒惰)模式
在 Python 中正则默认是贪婪模式(个别语言中也可能是非贪婪模式),贪婪模式就是总会尝试匹配更多的字符。
非贪婪模式则反之,总是尝试匹配尽可能少的字符。
、?、+、{m,n}后面加上?,可以将贪婪模式变成非贪婪模式。*
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值