re模块

re模块就是让我们能用正则表达式的语法去操作字符串。

正则表达式是一种小型的、高度专业化的编程语言。正则表达式被编译成一系列的字节码,然后由C编写的匹配引擎执行。

关于正则的语法,看我的另一篇博客:https://www.cnblogs.com/kuxingseng95/p/9461424.html

re模块的常用方法:

import re

# 1.findall,返回所有满足匹配条件的结果,放在列表里,如果正则中有分组,它只会把匹配到的分组信息放到列表中,
print(re.findall('a.', 'adfjsac'))      # ['ad', 'ac']
print(re.findall('www.(baidu).com',"www.baidu.com" ))  # ['baidu']
# 如果我们只想要它分组,而不只保存分组信息的话可以在左括号后面加"?:"
print(re.findall('www.(?:baidu).com',"www.baidu.com" ))  # ['www.baidu.com']

# 2,search,函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。
print(re.search('a+', 'bbbbbbbb'))      # None
print(re.search('b+', "bbbbbbbb"))      # <_sre.SRE_Match object; span=(0, 8), match='bbbbbbbb'>
print(re.search('b+', "bbbbbbbb").group())      # bbbbbbbb

# 3,match,同search,不过仅在字符串开始处进行匹配
print(re.match('a', 'abc').group())  # a
print(re.match('b', "abc"))         # None

# 4,split
ret = re.split('[ab]', 'abcd')  # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
print(ret)  # ['', '', 'cd']

# 5,sub,查找替换,返回替换后的值。第一个参数是正则,第二个参数是要替换为什么,第三个参数是要查找替换的字符串,第四个参数是要替换的个数。
ret = re.sub('d', 'abc', 'aaa5bbb6', 1)
print(ret)  # aaaabcbbb6
ret = re.subn('d', 'abc', 'aa5bbb6')       # subn会多返回一个参数,就是匹配到的次数
print(ret)  # ('aaabcbbbabc', 2)

# 6,compile,写好匹配规则,然后可以使用其他的方法。
obj = re.compile('d{3}')
ret1 = obj.search('abc123eeee')
print(ret1.group())  # 123
ret2 = obj.findall('abc123eeee')
print(ret2)     # ['123']

# 7,迭代器方式查找,当数据量较大的时候适合
ret = re.finditer('d', 'ds3sy4784a')
print(ret)  # <callable_iterator object at 0x10195f940>

print(next(ret).group())    # 3
print(next(ret).group())    # 4
原文地址:https://www.cnblogs.com/kuxingseng95/p/9462314.html