为啥 re.groups() 不为我的一个正确匹配的组提供任何东西?

Posted

技术标签:

【中文标题】为啥 re.groups() 不为我的一个正确匹配的组提供任何东西?【英文标题】:Why won't re.groups() give me anything for my one correctly-matched group?为什么 re.groups() 不为我的一个正确匹配的组提供任何东西? 【发布时间】:2011-11-10 20:08:30 【问题描述】:

当我运行这段代码时:

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

我得到() 的结果。但是,.group(0) 给了我匹配。

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

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

【问题讨论】:

【参考方案1】:

据我所知,.groups() 返回一个由记住的组组成的元组。 IE。正则表达式中括在括号中的那些组。所以如果你要写:

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

你会得到

('1',)

作为您的回应。一般情况下,.groups() 将返回正则表达式中括号内的所有对象组的元组。

【讨论】:

【参考方案2】:

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

已编辑。

【讨论】:

这是groups字段,不是方法【参考方案3】:

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

试试

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

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

然后你得到

('1',)

结果。

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于为啥 re.groups() 不为我的一个正确匹配的组提供任何东西?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Chrome Profiler 没有为我的对象显示正确的保留路径,为啥我的对象从未被释放?

仅当搜索框不为空时才显示项目匹配内容

为啥参数中带有点的路由无法匹配?

为啥我的图像颜色与 FireFox 中的背景颜色不匹配?

为啥 WCF/JSON 不为 null 返回值返回“null”?

如何在不为其创建专用网站的情况下为我的应用提供隐私政策?