ajreckof
ajreckof

Reputation: 80

Python regex groupDict with repetitions of groups

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?

Upvotes: 1

Views: 214

Answers (1)

Wiktor Stribiżew
Wiktor Stribiżew

Reputation: 626927

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.

Upvotes: 0

Related Questions