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

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


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.


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.


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.