Home > Software design >  Python regex groupDict with repetitions of groups
Python regex groupDict with repetitions of groups

Time:12-29

Wondering if there is a function such as match.groupdict() that catches repetition similar to match.captures function.

When I run this code:

import regex

test = regex.compile("(?P<a>a)*(?P<b>b)*(?P<c>c)*")
test.match("aabbbcc").groupdict()

I get:

{'a': 'a', 'b': 'b', 'c': 'c'}

what I would like is something like that:

{'a': ['a', 'a'], 'b': ['b', 'b', 'b'], 'c': ['c', 'c']}

Is there a function to do so or should I just do it by hand myself?

CodePudding user response:

You can use

import regex
test=regex.compile("(?P<a>a)*(?P<b>b)*(?P<c>c)*")
print ( test.match("aabbbcc").capturesdict() )
# => {'a': ['a', 'a'], 'b': ['b', 'b', 'b'], 'c': ['c', 'c']}

Or, if you need to match the entire string with this pattern, replace .match with .fullmatch:

test.fullmatch("aabbbcc").capturesdict()

See the Python demo.

See the PyPi regex module documentation:

capturesdict returns a dict of the named groups and lists of all the captures of those groups.

  • Related