为啥 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 没有为我的对象显示正确的保留路径,为啥我的对象从未被释放?