Get the numbering of named regex groups

Peter Otten __peter__ at web.de
Wed Apr 8 10:28:49 EDT 2015


Mattias Ugelvik wrote:

> Example: re.match('(?P<first>a?)(?P<second>b?)', '')
> 
> How can I find out that the group 'first' correlates to the positional
> regex group 1? I need to know this to resolve crucial ambiguities in a
> string manipulation tool I'm making. Looking at spans, as the example
> above illustrates, won't do the job.
> 
> I can't see a way to do this through the documented interface (at
> least not in the `re` module?). 

Compile and match in two separate steps:

>>> import re
>>> r = re.compile('(?P<first>a?)(?P<second>b?)')

Find the groups' positions:

>>> r.groupindex
{'second': 2, 'first': 1}


Find the matching substrings:

>>> r.match("a").groupdict()
{'second': '', 'first': 'a'}

https://docs.python.org/2.7/library/re.html#re.RegexObject.groupindex





More information about the Python-list mailing list