python re 模块

import re

# findall('正则表达式',‘待匹配的字符串’)  #返回匹配到字符串,并存放在列表中
text = 'abcdefg'
res = re.findall('a..d', text)
print(res)
# ['abcd']

#  函数会在字符串内按规则匹配,当找到第一个匹配结果时就结束查找,然后返回一个包含匹配信息的对象,该对象可以 通过   调用group()方法   得到匹配的字符串,
# 如果没有匹配到字符串,则返回None
ret = re.search('abc', 'this is abcABC').group()
print(ret)  # 结果 : 'abc'

# compile,先将正则编译后放入对象,后面可重复使用,当多次使用同一正则时,可提高效率
obj = re.compile('\d{3}')  # 将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
ret = obj.search('abc123eeee')  # 正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())  # 结果 : 123

# match 在字符串开始处 就按规则匹配,其它 与search()函数使用方法一样
ret = re.match('this', 'this is abcABC').group()
print(ret)  # 结果 : 'this'

# finditer ,跟findall功能相同,返回的是存放结果的迭代器
ret = re.finditer('\d', 'ds3sy4784a')
print(ret)  # <callable_iterator object at 0x10195f940>
print(next(ret).group())  # 查看第一个结果  '3'
print(next(ret).group())  # 查看第二个结果  '4'
print([i.group() for i in ret])  # 查看剩余的匹配结果 ['7', '8', '4']

# sub 将数字替换成'H',参数1表示只替换1个
ret = re.sub('\d', 'H', 'eva3egon4yuan4', 1)
print(ret)  # evaHegon4yuan4
# subn 将数字替换成'H',返回元组(替换的结果,替换了多少次),即('evaHegonHyuanH', 3)
ret = re.subn('\d', 'H', 'eva3egon4yuan4')
print(ret)  # ('evaHegonHyuanH', 3)

# split 以字符分隔字符串成列表
ret = re.split('[ab]', 'abcd')  # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
print(ret)  # ['', '', 'cd']

ret = re.split("\d+", "eva3egon4yuan")
print(ret)  # 结果 : ['eva', 'egon', 'yuan']

ret = re.split("(\d+)", "eva3egon4yuan")
print(ret)  # 结果 : ['eva', '3', 'egon', '4', 'yuan']

# 在匹配部分加上()之后所切出的结果是不同的,
# 没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项,
# 这个在某些需要保留匹配部分的使用过程是非常重要的。

 

posted @ 2019-09-06 09:56  The_small_white  阅读(164)  评论(0)    收藏  举报