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?
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?
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.
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.
groups
field, not the method –
Procrastinate 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
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.
© 2022 - 2024 — McMap. All rights reserved.
groups
field, not the method – Procrastinate