re.findall 函数是用于在字符串中查找所有匹配的子字符串,并返回一个列表。默认情况下,它返回的列表中的索引从1开始,而不是从0开始。这是因为 re.findall 函数的设计初衷是为了与其他正则表达式函数兼容。
如果你想要从0开始索引的列表,可以使用 re.finditer 函数来代替 re.findall。re.finditer 返回的是一个迭代器,每个迭代器包含一个匹配对象,你可以通过调用 group() 方法来获取匹配的子字符串。
下面是一个使用 re.finditer 函数的示例代码:
import re
pattern = r'\d+'
text = 'abc123def456ghi789'
matches = re.finditer(pattern, text)
# 遍历每个匹配对象
for match in matches:
# 获取匹配的子字符串
print(match.group())
输出结果:
123
456
789
注意,re.finditer 返回的是一个迭代器,如果你想将匹配的子字符串存储在列表中,可以使用列表推导式:
import re
pattern = r'\d+'
text = 'abc123def456ghi789'
matches = [match.group() for match in re.finditer(pattern, text)]
print(matches)
输出结果:
['123', '456', '789']
通过使用 re.finditer 函数,你可以获得从0开始索引的匹配子字符串的列表。