Python re 模块 re.finditer.groups 函数
1. 介绍
re.finditer.groups() 函数用于获取所有匹配到的字符串列表。
该函数会将所有匹配到的字符串以元组形式返回,元组中的每个元素表示一个分组捕获到的字符串。
当正则表达式中含有多个分组时,该函数可以方便地获取所有分组捕获到的字符串。
2. 语法
re.finditer.groups() 函数的语法如下:
re.finditer().groups(default=None)
其中,default 是可选参数,表示在正则表达式中未匹配到任何分组时应返回的默认值。
3. 示例
示例 1
下面的示例演示了如何使用 re.finditer.groups() 函数获取正则表达式中所有分组捕获到的字符串列表:
import re
pattern = r"(\d{3})-(\d{3})-(\d{4})"
text = "My phone number is 123-456-7890 and 111-222-3333."
matches = re.finditer(pattern, text)
for match in matches:
groups = match.groups()
print(groups)
该示例中的正则表达式匹配美国电话号码格式,其中第一个分组捕获前三个数字,第二个分组捕获中间三个数字,第三个分组捕获后四个数字。
当匹配到两个电话号码时,使用 re.finditer() 函数获取所有匹配项,并使用 re.finditer.groups() 函数分别获取每个匹配项中所有分组捕获到的字符串列表。
输出结果如下:
('123', '456', '7890')
('111', '222', '3333')
示例 2
除了获取分组捕获到的字符串列表外,re.finditer.groups() 函数还可以与正则表达式中的命名分组一起使用。
下面的示例展示了如何在正则表达式中使用命名分组,并使用 re.finditer.groups() 函数获取所有命名分组捕获到的字符串列表:
import re
pattern = r"(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})"
text = "Today is 2022-01-01."
matches = re.finditer(pattern, text)
for match in matches:
groups = match.groupdict()
print(groups)
该示例中的正则表达式匹配日期格式,其中使用了命名分组 year、month、day 分别匹配年月日三个部分。
使用 re.finditer.groups() 函数获取所有匹配项中所有命名分组捕获到的字符串列表。
输出结果如下:
{'year': '2022', 'month': '01', 'day': '01'}
4. 总结
re.finditer.groups() 函数可以方便地获取正则表达式中所有分组捕获到的字符串列表。使用时,需要注意正则表达式中是否含有多个分组,并根据需要选择是否使用命名分组。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python re.finditer.groups函数:返回所有匹配的子串 - Python技术站