re.findall

re.findall查找出的是列表

  1. import re,requests,json
  2. #re.findall查找出的是列表
  3. lst = re.findall(r"\d+", "我的电话号码是: 10086,我的第二个电话号码是: 11010")
  4. print(type(lst))
  5. print(lst)
  6. print("---------------------------------")

re.finditer

re.finditer查找出来的是迭代器,从迭代器中拿到内容需要 .group() 拿出

  1. import re,requests,json
  2. #re.finditer查找出来的是迭代器,从迭代器中拿到内容需要 .group() 拿出
  3. it = re.finditer(r"\d+", "我的电话号码是: 10086,我的第二个电话号码是: 11010")
  4. print(type(it))
  5. for i in it:
  6. print(i.group())
  7. print("---------------------------------")

re.search

re.search只要查找到第一个相匹配的后就返回结果,返回的是match结果,那数据需要 .group()

  1. import re,requests,json
  2. #re.search只要查找到第一个相匹配的后就返回结果,返回的是match结果,那数据需要 .group()
  3. s = re.search(r"\d+","我的电话号码是: 10086,我的第二个电话号码是: 11010")
  4. print(type(s))
  5. print(s.group())
  6. print("---------------------------------")

re.match

re.match是从头开始匹配,匹配到内容后直接返回,且为数字类型,返回类型为match类型

  1. import re,requests,json
  2. #re.match是从头开始匹配,匹配到内容后直接返回,且为数字类型,返回类型为match类型,
  3. m = re.match(r"\d+","10086, 11010")
  4. print(type(m))
  5. print(m.group())
  6. print("---------------------------------")

re.complie

re.complice的作用是预加载正则表达式,一方面可以提高速度,另一方面可以可以多次利用

  1. import re,requests,json
  2. #re.complice的作用是预加载正则表达式,一方面可以提高速度,另一方面可以可以多次利用
  3. obj = re.compile(r"\d+")
  4. ret = obj.finditer("我的电话号码是: 10086,我的第二个电话号码是: 11010")
  5. print(type(ret))
  6. for i in ret:
  7. print(i.group())

re.complie模块可以定义好后多次使用

案例

通过正则表达式匹配HTML文件内的想关内容
其中: ?P<名称> 可以作为提取的点,也可以通过group的下标获取

  1. import re,requests,json
  2. html = '''
  3. <div class='a'><span id = '1'>奔驰</span></div>
  4. <div class='b'><span id = '2'>宝马</span></div>
  5. <div class='c'><span id = '3'>奥迪</span></div>
  6. <div class='d'><span id = '4'>劳斯莱斯</span></div>
  7. '''
  8. obj = re.compile(r"<div class='(?P<class>.*?)'><span id = '\d+'>(?P<name>.*?)</span></div>",re.S)
  9. #obj = re.compile(r"<div class='.*?'><span id = '\d+'>.*?</span></div>",re.S) 同上但只能通过group的下标精准获取内容
  10. rsp = obj.finditer(html)
  11. print(type(rsp)) #查看出输出结果是迭代器所以要用循环输出提取
  12. for i in rsp:
  13. print(i.group("name"))
  14. print(i.group("class"))

输出结果:

  1. D:\学习软件工具\pycharm\openstack-api\venv\Scripts\python.exe D:/学习软件工具/pycharm/openstack-api/venv/flavor/re_mokuai.py
  2. <class 'callable_iterator'>
  3. 奔驰
  4. a
  5. 宝马
  6. b
  7. 奥迪
  8. c
  9. 劳斯莱斯
  10. d