re模块的高级使用

主要有四个方法:

  search : 从字符串的任意位置开始检索,首次匹配即结束 

  findall : 全部匹配

  sub : 将正则匹配结果进行替换 

  split : 根据正则匹配结果将字符串进行切分,然后返回一个列表

import re

'''
    search  从字符串的任意位置搜索匹配,检索到第一个匹配的字符串,就结束匹配
'''

r = re.search(r'\d+', '有点饿4556')
print(r)
print(r.group())  # 4556

r = re.search(r'^\d+$', '有点饿4556')
print(r)  # None

r = re.search(r'\d+', '有点饿4556 rwehjr 789')
print(r)
print(r.group())  # 4556

'''
    findall  从字符串的任意位置搜索匹配,匹配所有
'''

r = re.findall(r'\d+', '有点饿4556 rwehjr 789')
print(r)  # ['4556', '789']

'''
sub  将匹配到的数据进行替换
'''

r = re.sub(r'c', 'python', 'c一统江湖, c走向死往')
print(r)  # python一统江湖, python走向死往

r = re.sub(r'\d+', '250', 'c=1000, python=3000')
print(r)  # c=250, python=250


def func(d):
    '''表示真正匹配到的结果'''
    print(d.group())  # 这里会打印 1000, 3000, 说明匹配了两次,也说明了func调用了两次
    return '666'  # 这里返回int类型竟然报错


r = re.sub(r'\d+', func, 'c=1000, python=3000')
print(r) # c=666, python=666



def func1(d):
    return  str(int(d.group())+50)

r = re.sub(r'\d+', func1, 'c=1000, python=3000')
print(r) # c=1050, python=3050


'''
split 切分
'''

s = 'admin:root boot,jet'
r = re.split(r':|\s|,',s)
print(r) # ['admin', 'root', 'boot', 'jet']

猜你喜欢

转载自www.cnblogs.com/z-qinfeng/p/12000083.html