为什么re.groups()对我匹配成功的组不返回任何内容?
当我运行这段代码时:
print re.search(r'1', '1').groups()
我得到的结果是 ()
。不过,使用 .group(0)
我可以得到匹配的内容。
难道 groups()
不应该给我一些包含匹配内容的东西吗?
4 个回答
5
这个问题的原因是你没有使用捕获组(因为在模式中没有用到()
)。
而group(0)
会返回整个搜索结果(即使它根本没有捕获组):
26
根据我所知道的,.groups()
会返回一个包含记住的组的元组。也就是说,正则表达式中用括号括起来的那些部分。如果你写了:
print re.search(r'(1)', '1').groups()
你会得到
('1',)
作为你的结果。一般来说,.groups()
会返回一个元组,里面包含了正则表达式中所有用括号括起来的组。
23
因为你没有任何捕获组,所以groups是空的 - http://docs.python.org/library/re.html#re.MatchObject.groups。无论是否在组中捕获,group(0)总是会返回匹配到的整个文本。
已编辑。