【python】re解析和re模块

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

正则

RE概念

常见的元字符

量词

贪婪&惰性

修饰符

re模块

findall

finditer

search

match

预加载正则式

内容提取


正则

RE概念

常见的元字符

量词

贪婪&惰性

贪婪匹配.*

惰性匹配.*?

修饰符

修饰符描述
re.I使匹配对大小写不敏感
re.L做本地化识别locale-aware匹配
re.M多行匹配影响 ^ 和 $
re.S使 . 匹配包括换行在内的所有字符
re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

re模块

findall

import re
# findall:匹配所有符合正则规则的内容
my_list=re.findall(r"\d+","电话号码是:10011,我女友的电话是:10012")
print(my_list)

返回一个列表效率较低['10011', '10012']

finditer

import re
# finditer 匹配后返回迭代器(效率高)
my_it=re.finditer(r"\d+","电话号码是:10011,我女友的电话是:10012")
print(my_it)
for i in my_it:
    print(i.group())
    print(i)

<callable_iterator object at 0x0000011D90A33D60>
10011
<re.Match object; span=(6, 11), match='10011'>
10012
<re.Match object; span=(20, 25), match='10012'>

import re
# search找到一个结果就返回
s=re.search(r"\d+","电话号码是:10011,我女友的电话是:10012")
print(s.group())

返回一个match对象通过.group读取。

10011 

match

s=re.match(r"\d+","电话号码是:10011,我女友的电话是:10012")
print(s.group())

报错mathc默认为从头开始匹配即此刻正则变为^\d+

预加载正则式

obj=re.compile(r"\d+")
ret=obj.finditer("电话号码是:10011,我女友的电话是:10012")
for i in ret:
    print(i.group())

10011
10012

内容提取

(?P<分组名字>正则表达式)

import re
s="""
<div class='coleak1'><span id='111'>coleaks5</span></div>
<div class='coleak2'><span id='222'>coleaks6</span></div>
<div class='coleak3'><span id='333'>coleaks7</span></div>
<div class='coleak4'><span id='444'>coleaks8</span></div>
"""
obj=re.compile(r"<div class='.*?'><span id='\d+'>(?P<xiao>.*?)</span></div>",re.S)
# re.S:让.能匹配换行符
res=obj.finditer(s)
for i in res:
    print(i.group("xiao"))

coleaks5
coleaks6
coleaks7
coleaks8

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python