当我运行此代码时:
print re.search(r'1', '1').groups()
我得到()
. 但是,.group(0)
给了我比赛。
不应该groups()
给我包含匹配的东西吗?
更新:感谢您的回答。所以这意味着如果我re.search()
没有子组,我必须使用groups(0)
来获得匹配?
当我运行此代码时:
print re.search(r'1', '1').groups()
我得到()
. 但是,.group(0)
给了我比赛。
不应该groups()
给我包含匹配的东西吗?
更新:感谢您的回答。所以这意味着如果我re.search()
没有子组,我必须使用groups(0)
来获得匹配?
据我所知,.groups()
返回一组记忆组。即正则表达式中括号中的那些组。所以如果你要写:
print re.search(r'(1)', '1').groups()
你会得到
('1',)
作为你的回应。通常,.groups()
将返回正则表达式中包含在括号内的所有对象组的元组。
groups 为空,因为您没有任何捕获组 - http://docs.python.org/library/re.html#re.MatchObject.groups。group(0) 将始终返回匹配的整个文本,无论它是否在组中捕获
已编辑。
原因是您没有捕获组(因为您没有()
在模式中使用)。
http://docs.python.org/library/re.html#re.MatchObject.groups
并group(0)
返回整个搜索结果(即使它根本没有捕获组):
http ://docs.python.org/library/re.html#re.MatchObject.group
您的正则表达式中没有组,因此您会得到一个空列表 ( ()
)。
尝试
re.search(r'(1)', '1').groups()
使用括号创建一个捕获组,匹配这部分模式的结果存储在一个组中。
然后你得到
('1',)
结果。