我有这行代码:
hdfs_regex = re.compile(r'\s+(?P<unmatched>\d+)\s+\/\s+(?P<total>\d+)')
我浏览一个文件并使用:
results = re.search(hdfs_regex, line)
查找line
中与我的正则表达式匹配的部分。匹配时,有没有办法返回每个找到的匹配的正则表达式变量?
在不知道正则表达式变量名的情况下,有没有找到group
?
Pseudocode可能看起来像这样
grouped_val = [i for i in results.grouped()]
其中results.grouped()
是一个可迭代的,我可以在不知道变量名的情况下检索找到的值
答案 0 :(得分:2)
您可以使用groups()
返回包含匹配模式的所有子组的元组:
>>> m = re.search(r"(\d+)\.?(\d+)?", "24.13244")
>>> m.groups()
('24', '13244')
<强>基团([默认])强> 返回包含匹配的所有子组的元组,从1到多个组都在模式中。默认参数用于未参与匹配的组;它默认为None。 (不兼容性说明:在原始Python 1.5版本中,如果元组长度为一个元素,则会返回一个字符串。在更高版本中(从1.5.1开始),在这种情况下返回单个元组。)