正则表达式

正则表达式
一.元字符

主要得元字符就是这些:. * ? + [] () \ ^ $

re.I:这是大小写忽略

re.M:这是分行

re.S:能显示\n

如果想同时使用多个就re.M|re.S

1.通配元字符.(只能匹配一个字符,除了\n)

如果想匹配换行符,在后面加re.S

这里先说一下普通查询,就是硬巴巴的查询的那种

import re
test1 = 'fsfases^e,,fe^s,fs^eksafkln,'
s1 = re.findall('a.',test1)
print(s1)

运行如下
在这里插入图片描述

说明一下,这里的.就是代表任意一个字符匹配,什么都能匹配。比如
在这里插入图片描述

2.锚点元字符^和$

主要用来定位,^这是定位在句首的,$定位在句尾的

import re
test1 = 'bc\nbca\ndca'
s1 = re.findall('^b.',test1,re.M)
print(s1)

记住,这里的re.M是多行匹配

在这里插入图片描述
这是加了re.M,如果不加会怎么样呢
在这里插入图片描述

显而易见只能匹配一个

就 和 这 个 一 样 , 但 是 我 变 换 了 一 下 , 我 匹 配 了 c . 就和这个一样,但是我变换了一下,我匹配了c. c.,python很智能
在这里插入图片描述

3.重复元字符*和+和?

*:为0到多个,{0,}这个花括号的里面的是次数的意思

import re
test1 = 'babbcbbbbc'
s1 = re.findall(r'b*',test1)
print(s1)

这里有个问题,为什么在最后面多一个“ ”呢?

在这里插入图片描述
{0,}和*等价

+:这是从一开始的,同样和{1,}等价

在这里插入图片描述
?:0或1次同样等价于{0,1}

在这里插入图片描述

4.选择元字符|,[],[^]
import re
test1 = 'babbcb\nbbdddbc'
s1 = re.findall(r'b|d',test1,re.M)
s2 = re.findall(r'[b-d]',test1,re.M)
print(s1)
print(s2)

在这里插入图片描述

4.1这是取反,但是又有一个问题,为什么会有’\n’?

因为r了之后,\n变成普通的字符了

在这里插入图片描述

5.取消字符的转义(\或者r)
import re
test1 = 'babbcb\nbbdddbc'
test2 = 'babbcb\\nbbdddbc'
test3 = r'babbcb\nbbdddbc'
print(test1)
print(test2)
print(test3)

在这里插入图片描述

6.分组元字符()
import re
test1 = 'babbcbddbdddbbddddbdbc'
s1 = re.findall("[b]d*",test1)
print(s1)
s1 = re.findall("[b](d*)",test1)
print(s1)

在这里插入图片描述
先把上面的结果临时保存,然后在只是返回括号的东西

7.贪婪模式和非贪婪模式
import re
test1 = 'abbbcbbbbc'
s1 = re.findall(r'a.*c',test1)
print(s1)
s1 = re.findall(r"a.*?c",test1)
print(s1)

贪婪是尽可能唱的取,非贪婪是尽量少取
在这里插入图片描述

8.预定义字符类

在这里插入图片描述
演示:

import re
test1 = 'abb1233bc32123144bb4234bbc'
s1 = re.findall("\d",test1)
print(s1)

在这里插入图片描述


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值