目录
正则
RE概念
常见的元字符
量词
贪婪&惰性
修饰符
re模块
findall
finditer
search
match
预加载正则式
内容提取
贪婪匹配.*
惰性匹配.*?
修饰符 | 描述 |
---|---|
re.I | 使匹配对大小写不敏感 |
re.L | 做本地化识别(locale-aware)匹配 |
re.M | 多行匹配,影响 ^ 和 $ |
re.S | 使 . 匹配包括换行在内的所有字符 |
re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. |
re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
import re
# findall:匹配所有符合正则规则的内容
my_list=re.findall(r"\d+","电话号码是:10011,我女友的电话是:10012")
print(my_list)
返回一个列表(效率较低)['10011', '10012']
import re
# finditer 匹配后返回迭代器(效率高)
my_it=re.finditer(r"\d+","电话号码是:10011,我女友的电话是:10012")
print(my_it)
for i in my_it:
print(i.group())
print(i)
10011
10012
import re
# search:找到一个结果就返回
s=re.search(r"\d+","电话号码是:10011,我女友的电话是:10012")
print(s.group())
返回一个match对象,通过.group读取。
10011
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="""
coleaks5
coleaks6
coleaks7
coleaks8
"""
obj=re.compile(r"(?P.*?) ",re.S)
# re.S:让.能匹配换行符
res=obj.finditer(s)
for i in res:
print(i.group("xiao"))
coleaks5
coleaks6
coleaks7
coleaks8