
1. findall() 将匹配到的所有结果塞进列表并返回
import re
# 匹配字符串中的所有字符'a'
result = re.findall("a", "我是一个abcdefag")
print(result) # ['a', 'a']
# 匹配字符串中的所有数字
result = re.findall(r"d+", "我今年18岁,我有2000块") # 因为反斜杠''在字符串中会被当做转移功能,所以要在字符串前面加r
print(result) # ['18', '2000']
2. finditer() 将匹配到的所有结果塞进迭代器并返回,迭代器中存放的是match对象,需要调用.group()获取匹配结果,迭代器可以优化程序性能,当能匹配到多个对象是,优先使用finditer()
import re # 匹配字符串中的所有数字 result = re.finditer(r"d+", "我今年18岁,我有2000块") print(result) #for item in result: print(item) # print(item.group()) # 18, 2000
3. search() 它只返回一个match对象,该对象是finditer()匹配到的第一个对象
import re result = re.search(r"d+", "我叫周杰伦,今年32岁,我的班级是3年2班") print(result.group()) # 32
4. match() 它只返回一个match对象,不同的是match相当于在正则匹配表达式前加上了’^’,即只从字符串开头匹配
import re result = re.match(r"d+", "9527,我的编号是9527") # 正则表达式相当于是r"^d+" print(result.group()) # 9527
5. compile() 预加载正则表达式,相当于将正则表达式存储到一个变量中,方便后面调用,而不需要每次都申请内存
import re
obj = re.compile(r"d+")
result = obj.findall("我叫周杰伦,今年32岁,我的班级是3年2班")
print(result) # ['32', '3', '2']
6. 如何从正则中提取到我们想要的数据
# 将想要提取的数据用小括号括起来,可以单独取名字
# (?P<名字>正则)
# 提取数据的时候,需要group("名字")
import re
s = """
中国联通
中国移动
"""
# 想要获取上述字符串中的id和text信息
obj = re.compile(r"d+)'>(?P.*?)")
result = obj.finditer(s)
for item in result:
id = item.group("id")
name = item.group("name")
print(id, name) # 10010 中国联通 10086 中国移动
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)