re模块

Posted lowislucifer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了re模块相关的知识,希望对你有一定的参考价值。

一、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](\d14)(\d2[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模块的主要内容,如果未能解决你的问题,请参考以下文章

re模块的高级用法

python3怎么导入re模块

Python模块-re模块

python re模块

re模块

python常用模块之re模块(正则)