-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
@dhouck
Expected (cpython, and micropython built-in
Actual (micropython
Description
Problem description
When a regex contains optional capture groups, for example (a)?b, the PCREMatch.group() method throws an overflow error for that group. I believe this is because PCRE is representing a nonexistent group as SIZE_MAX and re isnʼt checking for that.
Additional fallout
The unix-ffi json library requires the unix-ffi re library, and currently cannot parse numbers unless they have an integer part, a fractional part, and and exponential part; instead, it throws this same error.
To reproduce
>>> import re >>> r = re.compile(r'(a)?b') >>> m = r.match('b') >>> (m.group(0), m.group(1))
Expected (cpython, and micropython built-in re library):
('b', None)
Actual (micropython re library)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/micropython/re.py", line 65, in group
OverflowError: overflow converting long int to machine word
Metadata
Metadata
Assignees
Labels
No labels