python re模块使用

本文详细介绍了Python中正则表达式的使用方法,包括re模块的match、search和findall函数,以及各种正则表达式元素如字符集合、锚字符和重复匹配的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

re.match函数

原型: match(pattern,string,flags=0)
  • pattern:匹配的正则表达式
  • string:要匹配的字符串
  • flags:标志位,用于控制正则表达式的匹配方式

re.I: 忽略大小写
re.L 做本地户识别
re.M 多行匹配,影响^和¥
re.S 是.匹配包括换行符在内的所有字符
re.U 根据Unicode字符集解析字符,影响\w \W \b \B
re.X 是我们以更灵活的格式理解正砸表达式

参数:
功能:

尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回None

re.search函数

原型: search(pattern,string,flags=0)
  • pattern:匹配的正则表达式
  • string:要匹配的字符串
  • flags:标志位,用于控制正则表达式的匹配方式
功能:

扫描整个字符串,并返回第一个成功的匹配

print(re.search("sunck", "good man is sunck! sunck is nice")

re.findall函数

原型: search(pattern,string,flags=0)
  • pattern:匹配的正则表达式
  • string:要匹配的字符串
  • flags:标志位,用于控制正则表达式的匹配方式
功能:

扫描整个字符串,并返回结果列表

. 匹配除换行符以外的任意字符

[]是字符集合,表示匹配方括号中所包含的任意一个字符

[0123456789] 匹配0~9之间的任意一个数字
[sunck] 匹配’s’,‘u’,‘n’,‘c’,'k’中的任意一个字符
[a–z] 匹配任意小写字母
[A–Z] 匹配人以大写字母
[0–9] 匹配任意数字
[0–9a–zA–Z_] 匹配任意数字和字母,和下划线
[^sunck] 匹配除了这几个字母之外的所有字符
^ 称为脱字符,表示不匹配集合中的字符
[^0–9] 匹配所有的非数字字符

\d 同[0–9]
\D 同[^0–9]
\w 同[0–9a–zA–Z]
\W 同[^0–9a–zA–Z]
\s 匹配任意的空白符(空格,换行,回车,换页,制表)效果如同[ \f\n\r\t]

锚字符

^ 行首匹配,和在[]中的^ 不是一个意思,并且在每行的行首进行匹配
$ 行尾匹配
\A 匹配字符串的开始,他和^ 的区别是,\A 只匹配整个字符串的开头,即使在 re.M模式下也不会匹配他行的行首

\Z 匹配字符串的开始,他和$ 的区别是,\Z 只匹配整个字符串的结尾,即使在 re.M模式下也不会匹配他行的结尾

匹配多个字符

说明:下方的x,y,z均为假设的普通字符,不是正则表达式的元字符

(xyz) 匹配小括号内的xyz(作为一个整体去匹配)
x? 匹配0个或者1个x
x* 匹配0个或者任意多个x
x+ 匹配至少一个x
x{n} 匹配确定的n个x (n是一个非负整数)
x{n, } 匹配至少的n个x
x{n,m} 匹配至少n个最多m个。注意:n<=m

print(re.findall(r"a?", "aaa")) #非贪婪匹配(尽可能少的匹配)
print(re.findall(r"a*", "aaabaa"))#贪婪匹配(尽可能多的匹配)
print(re.findall(r"a+", "aaabaa"))#贪婪匹配(尽可能多的匹配)
print(re.findall(r"a{3}", "aaabaa"))#贪婪匹配(尽可能多的匹配)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值