Iterate over group names in a regex match?

Peter Otten __peter__ at web.de
Tue Jan 19 12:28:11 EST 2010


Brian D wrote:

> Here's a simple named group matching pattern:
> 
>>>> s = "1,2,3"
>>>> p = re.compile(r"(?P<one>\d),(?P<two>\d),(?P<three>\d)")
>>>> m = re.match(p, s)
>>>> m
> <_sre.SRE_Match object at 0x011BE610>
>>>> print m.groups()
> ('1', '2', '3')
> 
> Is it possible to call the group names, so that I can iterate over
> them?
> 
> The result I'm looking for would be:
> 
> ('one', 'two', 'three')

>>> s = "1,2,3"
>>> p = re.compile(r"(?P<one>\d),(?P<two>\d),(?P<three>\d)")
>>> m = re.match(p, s)
>>> dir(m)
['__copy__', '__deepcopy__', 'end', 'expand', 'group', 'groupdict', 
'groups', 'span', 'start']
>>> m.groupdict().keys()
['one', 'three', 'two']
>>> sorted(m.groupdict(), key=m.span)
['one', 'two', 'three']

Peter



More information about the Python-list mailing list