为什么re.groups()对我匹配成功的组不返回任何内容?

34 投票
4 回答
66871 浏览
提问于 2025-04-17 01:31

当我运行这段代码时:

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)总是会返回匹配到的整个文本。

已编辑。

撰写回答