re模块中的方法

# re模块中的方法
import re

# findall() 返回所有满足匹配的结果放到列表中

# search() 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象, 如果字符串没有匹配,则返回None。
# 可以通过调用group()方法得到匹配的字符串

# match() 同search,相当于在search的基础上加上^,只匹配开头的

# split() 示例来解释
ret = re.split('[ab]', 'abcd')
print(ret)
# 结果为 ['', '', 'cd']
# 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
# 注意:如果分割符是字符串的开头,则会产生一个''

# re.sub() 参数:源内容,新内容,目标字符串,需要替换的次数
ret = re.sub('d+', 'A', 'jack2455asf54kll987', 2)  # 将字符串中的数字替换为A,替换2次
print(ret)
# 结果为 jackAasfAkll987

# re.subn() 返回元组,元组中的内容为替换后的结果与替换的次数
ret = re.subn('d+', 'A', 'jack2455asf54kll987')
print(ret)
# 结果为 ('jackAasfAkllA', 3)

# re.complie() 将匹配规则放到对象中,使用时可以多次调用该规则
com = re.compile('d+')
ret = com.findall('asdf1565asdl;fk14asdf588aa')
print(ret)

# finditer() 返回所有满足匹配的结果放到一个迭代器中
ret = re.finditer('d', 'ds3sy4784a')
print(ret)  # <callable_iterator object at 0x10195f940>

print(next(ret).group())
print(next(ret).group())

# 注意
ret = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')
print(ret)  # ['oldboy']     这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可

ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com')  # ?: 代表取消权限
print(ret)  # ['www.oldboy.com']
原文地址:https://www.cnblogs.com/dangrui0725/p/9446659.html