34

当我运行此代码时:

print re.search(r'1', '1').groups() 

我得到(). 但是,.group(0)给了我比赛。

不应该groups()给我包含匹配的东西吗?

更新:感谢您的回答。所以这意味着如果我re.search()没有子组,我必须使用groups(0)来获得匹配?

4

4 回答 4

25

据我所知,.groups()返回一组记忆组。即正则表达式中括号中的那些组。所以如果你要写:

print re.search(r'(1)', '1').groups()

你会得到

('1',)

作为你的回应。通常,.groups()将返回正则表达式中包含在括号内的所有对象组的元组。

于 2011-09-05T19:39:44.570 回答
23

groups 为空,因为您没有任何捕获组 - http://docs.python.org/library/re.html#re.MatchObject.groups。group(0) 将始终返回匹配的整个文本,无论它是否在组中捕获

已编辑。

于 2011-09-05T19:28:48.837 回答
5

原因是您没有捕获组(因为您没有()在模式中使用)。 http://docs.python.org/library/re.html#re.MatchObject.groups

group(0)返回整个搜索结果(即使它根本没有捕获组): http ://docs.python.org/library/re.html#re.MatchObject.group

于 2011-09-05T19:36:14.863 回答
5

您的正则表达式中没有组,因此您会得到一个空列表 ( ())。

尝试

re.search(r'(1)', '1').groups()

使用括号创建一个捕获组,匹配这部分模式的结果存储在一个组中。

然后你得到

('1',)

结果。

于 2011-09-05T19:37:18.217 回答