在不知道变量名的情况下返回regex变量

时间:2015-03-04 16:11:24

标签: python regex

我有这行代码:

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()是一个可迭代的,我可以在不知道变量名的情况下检索找到的值

1 个答案:

答案 0 :(得分:2)

您可以使用groups()返回包含匹配模式的所有子组的元组:

>>> m = re.search(r"(\d+)\.?(\d+)?", "24.13244")
>>> m.groups()
('24', '13244')
  

<强>基团([默认])   返回包含匹配的所有子组的元组,从1到多个组都在模式中。默认参数用于未参与匹配的组;它默认为None。 (不兼容性说明:在原始Python 1.5版本中,如果元组长度为一个元素,则会返回一个字符串。在更高版本中(从1.5.1开始),在这种情况下返回单个元组。)