标签:默认 引号 表达 匹配 color split() 结束 特殊 style
---恢复内容开始---
findall()用法
import re s = "olxdboy67laonxa34nhaialex" ret = re.findall("\d+",s) print(ret) #[‘67‘, ‘34‘]
search() 从左至右查询第一个就返回
s = "olxdboy67laonxa34nhaialex" ret = re.search("\d+",s) print(ret) #<re.Match object; span=(7, 9), match=‘67‘ print(ret.group()) #97 如果没有正则匹配的则会返回None,调用group会报错
match() 自带尖叫号,只匹配开始,相当于search加尖叫号
s = "olxdboy67laonxa34nhaialex" ret = re.match("\d+",s) print(ret) #None
s = "87olxdboyaonxa34nhaialex"
ret = re.match("\d+",s)
print(ret) #<re.Match object; span=(0, 2), match=‘87‘>
print(ret.group()) 87
split()
import re s = "asdsghjasdhjkiusyedjsjkskis" # ret = re.split("s",s) # print(ret) #[‘a‘, ‘d‘, ‘ghja‘, ‘dhjkiu‘, ‘yedj‘, ‘jk‘, ‘ki‘, ‘‘] ret = re.split("s",s,3) #后面的第是哪个参数代表切割几次 print(ret) #[‘a‘, ‘d‘, ‘ghja‘, ‘dhjkiusyedjsjkskis‘]
sub()
import re s = "asdsghjasdhassyedjsjkaskis" ret = re.sub("a","67",s,1) #第四个参数表示替换次数 注意第二个参数换成数字要加引号 print(ret) #67sdsghjasdhjkiusyedjsjkskis ret = re.sub("a","67",s) #没有第四个参数默认全部替换 print(ret) #67sdsghj67sdh67ssyedjsjk67skis ret= re.subn("a","67",s) print(ret) #(‘67sdsghj67sdh67ssyedjsjk67skis‘, 4)
subn得到的是元祖,第二项是替换词次数
compile() 省时间
import re s = "asdsghjasdhassyedjsjkaskis" ret = re.compile("a") #将 正则表达式进行编译,成为正则表达式对象 res = ret.search(s) #用编译好的正则表达式 # print(res) #<re.Match object; span=(0, 1), match=‘a‘> # print(res.group())#a
finder() 省空间
import re s = "asdsghjasadhassyaedjasjakaskis" ret = re.finditer("a",s) print(ret) #<callable_iterator object at 0x002AFDD0> 迭代器 for i in ret: print(i)#<re.Match object; span=(0, 1), match=‘a‘> 后面的没有写玩还有几条 print(i.group()) #a
compile()与finder()连用省空间和时间
import re s = "asdsghjasdhassyedjsjkaskis" ret = re.compile("a") #将 正则表达式进行编译 print(ret) res = ret.finditer(s) print(res) #<callable_iterator object at 0x002AFDD0> for i in res: print(i)#<re.Match object; span=(0, 1), match=‘a‘> 后面的没有写玩还有几条 print(i.group()) #a
findall()的优先级查询
s = "baidioldbouyuiyuijio" ret = re.findall("bai(di)o",s) print(ret) #[‘di‘],只显示这正则表达式内部的是因为,findall的正则表达式的括号内部默认优先显示 #可以去掉加 ?: ret= re.findall("bai(?:di)o",s) print(ret)#[‘baidio‘]
spllit()的优先级查询
ret=re.split("\d+","eva3egon4yuan") print(ret) #结果 : [‘eva‘, ‘egon‘, ‘yuan‘] ret=re.split("(\d+)","eva3egon4yuan") print(ret) #结果 : [‘eva‘, ‘3‘, ‘egon‘, ‘4‘, ‘yuan‘] #在匹配部分加上()之后所切出的结果是不同的, #没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项, #这个在某些需要保留匹配部分的使用过程是非常重要的。
分组命名 ?p
(?P<这个组的名字>正则表达式)
import re s = ‘<a>wahaha</a>‘ ret = re.search(‘>(?P<con>\w+)<‘,s) print(ret.group(0)) print(ret.group(1)) print(ret.group(‘con‘))
findall 和 split 得到的都是列表
search,match finditer 都是的到的特殊一句话,要和group连用
---恢复内容结束---
标签:默认 引号 表达 匹配 color split() 结束 特殊 style
原文地址:https://www.cnblogs.com/lxx7/p/9494919.html