当我们调用re.match
方法、re.search
方法,或者对re.finditer
方法的结果进行迭代时,拿到的数据类型都是re.Match
对象。
x = re.match(r'h','hello')
y = re.search(r'e','hello')
z = re.finditer(r'l','hello')
print(type(x)) # <class 're.Match'>
print(type(y)) # <class 're.Match'>
for a in z:
print(type(a)) # <class 're.Match'>
这个类里定义了相关的属性,可以直接让我们来使用。
属性和方法 | 说明 |
---|---|
pos | 搜索的开始位置 |
endpos | 搜索的结束位置 |
string | 搜索的字符串 |
re | 当前使用的正则表达式的对象 |
lastindex | 最后匹配的组索引 |
lastgroup | 最后匹配的组名 |
group(index=0) | 某个分组的匹配结果。如果index等于0,便是匹配整个正则表达式 |
groups() | 所有分组的匹配结果,每个分组的结果组成一个列表返回 |
groupdict() | 返回组名作为key,每个分组的匹配结果座位value的字典 |
start([group]) | 获取组的开始位置 |
end([group]) | 获取组的结束位置 |
span([group]) | 获取组的开始和结束位置 |
expand(template) | 使用组的匹配结果来替换模板template中的内容,并把替换后的字符串返回 |
ret = re.search(r'(abc)+', 'xxxabcabcabcdef')
print(ret.pos) # 搜索开始的位置,默认是0
print(ret.endpos) # 搜索结束的位置,默认是字符串的长度
print(ret.group(0)) # abcabcabc 匹配整个表达式
print(ret.group(1)) # abc 第一次匹配到的结果
print(ret.span()) # (3, 12) 开始和结束位置
print(ret.groups()) # 表示当正则表达式里有多个分组时,多个分组的匹配结果