re模块

re模块

re模块常用方法:
1.re.match 只匹配字符串的开头,若匹配失败则返回None
2.re.search 匹配整个字符串,直到成功匹配
3.re.findall 把所有匹配到的字符放到以列表中的元素返回
4.re.split 以匹配到的字符当做列表分隔符
5.re.sub 匹配字符并替换
6.re.fullmatch 全部匹配
match,search,finall区别可从下列代码看出:

import re

str='123abc12ab123'
obj1=re.match('\D+',str)
print(obj1)
obj2=re.search('\D+',str)
print(obj2.group())
obj3=re.findall('\D+',str)
print(obj3)

#返回结果
# None
# abc
# ['abc', 'ab']

re模块常用表达式规则:
‘.’ 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
‘^’ 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
′ 匹 配 字 符 结 尾 , 若 指 定 f l a g s M U L T I L I N E , r e . s e a r c h ( ′ f o o . ' 匹配字符结尾, 若指定flags MULTILINE ,re.search('foo. flagsMULTILINE,re.search(foo.’,‘foo1\nfoo2\n’,re.MULTILINE).group() 会匹配到foo1
’ 匹配号前的字符0次或多次, re.search(‘a*’,‘aaaabac’) 结果’aaaa’
‘+’ 匹配前一个字符1次或多次,re.findall(“ab+”,“ab+cd+abb+bba”) 结果[‘ab’, ‘abb’]
‘?’ 匹配前一个字符1次或0次 ,re.search(‘b?’,‘alex’).group() 匹配b 0次
‘{m}’ 匹配前一个字符m次 ,re.search(‘b{3}’,‘alexbbbs’).group() 匹配到’bbb’
‘{n,m}’ 匹配前一个字符n到m次,re.findall(“ab{1,3}”,“abb abc abbcbbb”) 结果’abb’, ‘ab’, ‘abb’]
‘|’ 匹配|左或|右的字符,re.search(“abc|ABC”,“ABCBabcCD”).group() 结果’ABC’
‘(…)’ 分组匹配, re.search("(abc){2}a(123|45)", “abcabca456c”).group() 结果为’abcabca45’
‘\A’ 只从字符开头匹配,re.search("\Aabc",“alexabc”) 是匹配不到的,相当于re.match(‘abc’,“alexabc”) 或^
‘\Z’ 匹配字符结尾,同$
‘\d’ 匹配数字0-9
‘\D’ 匹配非数字
‘\w’ 匹配[A-Za-z0-9]
‘\W’ 匹配非[A-Za-z0-9]
‘s’ 匹配空白字符、\t、\n、\r , re.search("\s+",“ab\tc1\n3”).group() 结果 ‘\t’
‘(?P…)’ 分组匹配 re.search("(?P[0-9]{4})(?P[0-9]{2})(?P[0-9]{4}

re模块中反斜杠的作用:
1.想要消除一个字符的特殊功能,就在它前面加上反斜杠
反斜杠可以剥夺元字符(元字符就是拥有特殊能力的符号,例如下面代码中的+)的特殊作用。同时,反斜杠还可以使得普通字符拥有特殊能力,可查看上面的表达式规则

import re

str='123+abc123456'
obj=re.search(r'\d{3}\+',str).group()
print(obj)

#返回结果:
#123+

2.如果是跟1-99,那么表示已用序号对应的子组所匹配的字符串
3.如果跟着的是数字0或者是三位数字,那么它是一个八进制数,表示的是这个八进制数对应的ASCII字符

re模块匹配规则前面通常需要加个r,解释如下:
与普通字符相比,其他相对特殊的字符,其中可能包含转义字符,即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。而如果是以r开头,那么说明后面的字符,都是普通的字符了,即如果是“\n”那么表示一个反斜杠字符,一个字母n,而不是表示换行了。
以r开头的字符,常用于正则表达式,对应着re模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值