【python】re解析和re模块

目录

正则

RE概念

常见的元字符

量词

贪婪&惰性

修饰符

re模块

findall

finditer

search

match

预加载正则式

内容提取


正则

RE概念

【python】re解析和re模块_第1张图片

常见的元字符

【python】re解析和re模块_第2张图片

量词

【python】re解析和re模块_第3张图片

贪婪&惰性

贪婪匹配.*

惰性匹配.*?

修饰符

修饰符 描述
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)


10011

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="""
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

你可能感兴趣的:(python,python,爬虫)