码迷,mamicode.com
首页 > 其他好文 > 详细

re模块

时间:2019-08-04 18:10:42      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:cal   obj   mat   sea   span   findall   表达   int   fss   

一、import re

二、findall方法、search方法、match方法

# findall
# 返回所有满足匹配条件的结果,放在列表里,前面一个参数是正则,后面是待匹配字符串
#findall示例
ret=re.findall([a-z]+,abnormol big %s please)
print(ret)
#返回 [‘abnormol‘, ‘big‘, ‘s‘, ‘please‘]
注意:#findall的分组优先
#优先匹配分组里面的,如果正则中有(),就只匹配()里面的,不是‘‘里的
#?:取消分组优先
ret11=re.findall(abc.(\d|[a-z]).cn,abc.5.cn)
print(ret11)
#5
ret12=re.findall(abc.(?:\d|[a-z]).cn,abc.5.cn)
print(ret12)
#[‘abc.5.cn‘]
# search
# 从前往后,找到一个就返回,返回的是结果的对象
# 需要.group才能获取结果,找不到就是返回None,调用group自然报错
# match
# 和search用法相同,也需要group找不到报错,返回None.
# 从头开始匹配,且必须从头开始,如果正则从头开始就匹配上,那就返回一个变量
#search 示例
ret2=re.search([z],abnormol big %s please)
print(ret2)    #None
if ret2:
    print(ret2.gruop)
ret3=re.search([ab],abnormol big %s please)
if ret3:
    print(ret3.group())
注意:#search和match 都有的关于group和分组的应用
ret10=re.search(‘^[1-9](\d{14})(\d{2}[0-9x])?$‘,‘520202199910100236‘)
print(ret10.group())
print(ret10.group(1))
print(ret10.group(2))
# 520202199910100236
# 20202199910100 第一个括号括起来的分组,第二个括起来的分组
# 236
 

三、split方法(切块)

ret4=re.split([ab],abcd)
print(ret4)
#split:切片先按a分割得到‘‘和‘bcd‘,再按b分割得到‘‘和‘cd‘ #[‘‘, ‘‘, ‘cd‘] 注意:#split的分组优先,如果正则有分组,就是保留切割字符 ret13=re.split(\d+,"sad23es233s21sed") print(ret13) ret14=re.split((\d+),"sad23es233s21sed") print(ret14) # [‘sad‘, ‘es‘, ‘s‘, ‘sed‘] # [‘sad‘, ‘23‘, ‘es‘, ‘233‘, ‘s‘, ‘21‘, ‘sed‘]

四、sub与subn方法

ret5=re.sub(\d,H,sre3454rfdxzrt4rfdcs2,1)
#sub:将第一个数字替换成‘H’,如果没有参数1就全部替换
print(ret5)
#sreH454rfdxzrt4rfdcs2
ret6=re.subn(\d,H,sre3454rfdxzrt4rfdcs2)
#subn:将数字替换成‘H’,并且返回替换了几次
print(ret6)
#(‘sreHHHHrfdxzrtHrfdcsH‘, 6)

五、其他(compile与finditer)

obj=re.compile(\d[a-z])
#compile:将正则表达式编译成为一个正则表达式对象,规则要匹配的是数字加小写字母
# 可以多次使用该正则
ret7=obj.search(saedtg1a2b)
ret8=obj.search(s366edm9tg1a2b)
print(ret7.group())   #1a
print(ret8.group())   #6e
ret9=re.finditer(\d,asdf32edf34fss3d)
print(ret9)
print(next(ret9).group())
print(next(ret9).group())
print([i.group()for i in ret9])   
#finditer:结果作为迭代器迭代器中每一个元素都要使用.group才能拿到结果 print([i.group()for i in ret9]) # <callable_iterator object at 0x000002650C282240> 返回一个迭代器 # 3 # 2 # [‘3‘, ‘4‘, ‘3‘] # []

 

re模块

标签:cal   obj   mat   sea   span   findall   表达   int   fss   

原文地址:https://www.cnblogs.com/lowislucifer/p/11298987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!