一、compile 函数
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
语法结构:re.compile(pattern[, flags])
import re
pattern = re.compile(r'\d+') # 用于匹配至少一个数字
m = pattern.match('one12twothree34four') # 从头开始匹配,没有匹配成功就停止运行
print (m) #None
m = pattern.match('one12twothree34four', 2, 10) # 从下标为2的位置,即'e'的位置开始匹配,没有匹配成功就停止运行
print(m) # None
m = pattern.match('one12twothree34four', 3, 10) # 从'1'的位置开始匹配,匹配成功
print (m) # 返回一个 Match 对象<_sre.SRE_Match object; span=(3, 5), match='12'>
print(m.group(0)) # 可省略 0'12'
print(m.start(0) ) # 可省略 03
print(m.end(0) ) # 可省略 05
print(m.span(0)) # 可省略 0(3, 5)
结果:
None
None
<_sre.SRE_Match object; span=(3, 5), match='12'>
12
3
5
(3, 5)
当匹配成功时,会返回一个match对象,其中:
group([group1, …]) 方法用于获得一个或多个分组匹配的字符串。当要获得整个匹配的子串时,可直接使用 group()或 group(0);
start([group]) 方法用于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0;
end([group]) 方法用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0;
span([group]) 方法返回 (start(group), end(group)) ,即子串在整个字符串中的起始位置和结束位置。
二、findall方法
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
注: