re模块补充

#_author:Administrator
#date:2019/11/9
#前面的 * + ? 都是贪婪匹配,如果要最少匹配的话,则在后面加 ?
import re
#1.贪婪匹配
ret=re.findall('star*','starrrrrr')
print(ret)# ['starrrrrr']
#2.惰性匹配
ret1=re.findall('star*?','starrrrrr')
print(ret1)# ['sta']
# 3 [] 字符集补充
ret2=re.findall('a[cd]b','acdb')
print(ret2)# [] 因为 c 和 d之间是或者的关系,只能取一个

ret3=re.findall('a[c,d]b','a,b')
print(ret3)# ['a,b']
#4.命名分组,组之间可以用任何符号代替
ret4=re.search('(?P<name>\w{2})/(?P<age>\d{2})','gsjsd/67js9')
print(ret4.group()) # sd/67
print(ret4.group('age'))# 67
print(ret4.group('name')) # sd
# 5.
ret5=re.findall('www.\w+.com','www.jingdong.com')
print(ret5)# ['www.jingdong.com']

ret5_=re.findall('www.(\w+).com','www.jingdong.com')
print(ret5_)# ['jingdong'] findall() 只会把匹配到的组里面的内容取出来
# ?: 取消组的优先级

ret6=re.findall('www.(?:\w+).com','www.jingdong.com')
print(ret6) # ['www.jingdong.com']
# 6.sub()
ret7=re.sub('\d','star','jjsdbs8cbsjds9bjjsnj2fds')
print(ret7)# jjsdbsstarcbsjdsstarbjjsnjstarfds
ret8=re.sub('\d','star','1s466c7',1)# 后面加数字代表前面多少个进行替换
print(ret8) # stars466c7
#7.subn() 会返回替换了多少次
ret9=re.subn('\d','asd','sh8sd6sds7smm3ssx')
print(ret9)# ('shasdsdasdsdsasdsmmasdssx', 4)
#8.finditer()
ret10=re.finditer('\d','sdjs7sdvhsb8sbs2bsnmxs9j')# ret10为一个迭代器
print(ret10)# <callable_iterator object at 0x01037490>
print(next(ret10).group())
print(next(ret10).group())
print(next(ret10).group())
print(next(ret10).group())


猜你喜欢

转载自www.cnblogs.com/startl/p/11824970.html