re.findall
re.findall查找出的是列表
import re,requests,json
#re.findall查找出的是列表
lst = re.findall(r"\d+", "我的电话号码是: 10086,我的第二个电话号码是: 11010")
print(type(lst))
print(lst)
print("---------------------------------")
re.finditer
re.finditer查找出来的是迭代器,从迭代器中拿到内容需要 .group() 拿出
import re,requests,json
#re.finditer查找出来的是迭代器,从迭代器中拿到内容需要 .group() 拿出
it = re.finditer(r"\d+", "我的电话号码是: 10086,我的第二个电话号码是: 11010")
print(type(it))
for i in it:
print(i.group())
print("---------------------------------")
re.search
re.search只要查找到第一个相匹配的后就返回结果,返回的是match结果,那数据需要 .group()
import re,requests,json
#re.search只要查找到第一个相匹配的后就返回结果,返回的是match结果,那数据需要 .group()
s = re.search(r"\d+","我的电话号码是: 10086,我的第二个电话号码是: 11010")
print(type(s))
print(s.group())
print("---------------------------------")
re.match
re.match是从头开始匹配,匹配到内容后直接返回,且为数字类型,返回类型为match类型
import re,requests,json
#re.match是从头开始匹配,匹配到内容后直接返回,且为数字类型,返回类型为match类型,
m = re.match(r"\d+","10086, 11010")
print(type(m))
print(m.group())
print("---------------------------------")
re.complie
re.complice的作用是预加载正则表达式,一方面可以提高速度,另一方面可以可以多次利用
import re,requests,json
#re.complice的作用是预加载正则表达式,一方面可以提高速度,另一方面可以可以多次利用
obj = re.compile(r"\d+")
ret = obj.finditer("我的电话号码是: 10086,我的第二个电话号码是: 11010")
print(type(ret))
for i in ret:
print(i.group())
案例
通过正则表达式匹配HTML文件内的想关内容
其中: ?P<名称> 可以作为提取的点,也可以通过group的下标获取
import re,requests,json
html = '''
<div class='a'><span id = '1'>奔驰</span></div>
<div class='b'><span id = '2'>宝马</span></div>
<div class='c'><span id = '3'>奥迪</span></div>
<div class='d'><span id = '4'>劳斯莱斯</span></div>
'''
obj = re.compile(r"<div class='(?P<class>.*?)'><span id = '\d+'>(?P<name>.*?)</span></div>",re.S)
#obj = re.compile(r"<div class='.*?'><span id = '\d+'>.*?</span></div>",re.S) 同上但只能通过group的下标精准获取内容
rsp = obj.finditer(html)
print(type(rsp)) #查看出输出结果是迭代器所以要用循环输出提取
for i in rsp:
print(i.group("name"))
print(i.group("class"))
输出结果:
D:\学习软件工具\pycharm\openstack-api\venv\Scripts\python.exe D:/学习软件工具/pycharm/openstack-api/venv/flavor/re_mokuai.py
<class 'callable_iterator'>
奔驰
a
宝马
b
奥迪
c
劳斯莱斯
d