正则
使用:
import re
re.match(pattern,string,flags = 0)
pa = re.match('love','i love you') //从头开始匹配
pa.group() //匹配对象
pa.span() //匹配位置元组
功能:从第一个字符开始匹配 不符合返回None
re.search(pattern,string,flags = 0)
pa =re.search('love','i love you')
功能:扫描整个字符串 返回值是第一个出现的
findall(pattern,string,flags = 0)
功能:查找整个字符串 结果返回列表
compile
功能:正则表达式是否正确
单字符
==.== 匹配除换行符以外的任意字符
==[]== 匹配集合也就是[]里的任意一个字符
==a-z== 匹配除a-z之外的字符
==^== 边界符 以..开始
==$== 边界符 以..结束
==[a-zA-Z0-9]== 匹配数字字母
==\d== 匹配的是数字
==\D== 匹配非数字
扫描二维码关注公众号,回复:
52378 查看本文章
==\w== 匹配数字字母下划线
==\W== 匹配非数字字母下划线
==\s== 匹配空字符
==\S== 除空白字符外的任意字符
=={n}== 修饰元字符前边的单字符n次
=={n,}== 修饰元字符前边的单字符出现至少n次
=={n,m}== 修饰元字符前边的单字符出现 >=n <=m次
=={,n}== 修饰元字符出现次数是0-n
==+== 修饰元字符前单字符至少出现1次
==*== 匹配的可以是0次货任意多次
==?== 匹配一次或0次
==\b== 词边界 \W隔开的都是词边界
==\B== 非词边界
r'\w' 修饰正则表达式时意义和修饰字符串时意义不同
修饰字符串的时候是失去转义字符的意义
在正则里 是不进行转义
分组和子模式
==()== 子模式
==\num== 将num次()中匹配到的值作为匹配字符
\w \S可以匹配中文
了解: (?P) (?P=name)
贪婪模式
正则表达式默认贪婪模式
常用的非贪婪模式
==+?==
==*?==
表达式修饰符
re.I 无视字符大小
re.M 视为多行
re.S 视为单行
正则函数
sub 替换
sub(字符串,源字符串)
reg = re.compile(r'\d'')
res = reg.sub('aa','woyi12')
print(res) //woyaa
注:
- 使用findall匹配时 正则表达式中的()为捕获型 获取匹配到的结果中的小括号内容
- (?:) 非捕获型括号 匹配pattern 但是不捕获
正则迭代器
res = re.finditer('\d','12345')
print(next(res).group()) //1
print(next(res).group()) //2
print(next(res).group()) //3