python--re模块

 一、re模块下的常用方法  :  findall   search   match   spilt  sub   subn  compile   finditer
首先要:
import re 导入模块
findall   在字符串中查找所有满足条件的,并返回
ret=re.findall('a','asdvma')
print(ret)
#['a', 'a']
search  查找函数会在字符串内查找到第一个匹配,然后返回这个对象,
只有通过调用group()方法才能得到匹配的字符串,如果字符串没有匹配,则返回None。

ret=re.search('a','asdvma')
print(ret.group())
#a
match   从字符串第一个字符开始查找,第一个没有就不再往后找了
re=re.search('a','asdvma')
print(re.group())     #a
ret=re.search('c','asdvma')
print(ret.group())   #找不到,调用group 会报错
#match是从头开始匹配,如果正则规则从头开始可以匹配上,就返回一个变量。
#匹配的内容需要用group才能显示
#如果没匹配上,就返回None,调用group会报错
spilt 
ret = re.split('[ab]', 'abcd')
print(ret)  # ['', '', 'cd']
#先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
sub   把正则找到的字符替换为你想转成的字符
ret=re.sub('a','H','ERGJFVacza')
print(ret)    #ERGJFVHczH
subn  把正则找到的字符替换为你想转成的字符,并且返回替换的数量
ret=re.subn('a','H','ERGJFVacza')
print(ret)    
#('ERGJFVHczH', 2)  返回元组(替换的结果,替换了多少次)
finditer返回一个存放匹配结果的迭代器
ret=re.finditer('a','fnksdngaadmsva')
print(ret)   #<callable_iterator object at 0x01D4E9B0>   返回迭代器
print(next(ret).group())        #a  #查看第一个结果
print(next(ret).group())        #a  #查看第二个结果
print([i.group() for i in ret])  #查看剩余的左右结果
for i in ret:
    print(i.group())
 二、正则使用进阶,取消正则优先级  ?:
import re
ret=re.findall('www.(a|b).com','www.a.com')
print(ret)    #['a']  因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可.
取消优先级,即在括号最前面加   ?:  就可以了
ret=re.findall('www.(?:a|b).com','www.a.com')
print(ret)   #['www.a.com']

ret=re.split('d+','sadj4j3f2')
print(ret)    #['sadj', 'j', 'f', '']
ret=re.split('(d+)','sadj4j3f2')     # 加括号,结果是把数字也保留下来了

 
 
原文地址:https://www.cnblogs.com/zzy-9318/p/8253558.html