Why won't re.groups() give me anything for my one correctly-matched group?

↘锁芯ラ 提交于 2019-11-29 10:41:39

问题


When I run this code:

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

I get a result of (). However, .group(0) gives me the match.

Shouldn't groups() give me something containing the match?

Update: Thanks for the answers. So that means if I do re.search() with no subgroups, I have to use groups(0) to get a match?


回答1:


groups is empty since you do not have any capturing groups - http://docs.python.org/library/re.html#re.MatchObject.groups. group(0) will always returns the whole text that was matched regardless of if it was captured in a group or not

Edited.




回答2:


To the best of my knowledge, .groups() returns a tuple of remembered groups. I.e. those groups in the regular expression that are enclosed in parentheses. So if you were to write:

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

you would get

('1',)

as your response. In general, .groups() will return a tuple of all the groups of objects in the regular expression that are enclosed within parentheses.




回答3:


You have no groups in your regex, therefore you get an empty list (()) as result.

Try

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

With the brackets you are creating a capturing group, the result that matches this part of the pattern, is stored in a group.

Then you get

('1',)

as result.




回答4:


The reason for this is that you have no capturing groups (since you don't use () in the pattern). http://docs.python.org/library/re.html#re.MatchObject.groups

And group(0) returns the entire search result (even if it has no capturing groups at all): http://docs.python.org/library/re.html#re.MatchObject.group



来源:https://stackoverflow.com/questions/7312020/why-wont-re-groups-give-me-anything-for-my-one-correctly-matched-group

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!