[issue13169] Regular expressions with 0 to 65536 repetitions raises OverflowError

Maurice de Rooij report at bugs.python.org
Fri Oct 14 13:07:28 CEST 2011


Maurice de Rooij <mauder at gmail.com> added the comment:

So if I understand correctly, the maximum of 65535 repetitions is by design?

Have tried a workaround by repeating the repetitions by placing it inside a capturing group, which is perfectly legal with Perl regular expressions:

$mystring = "test";
if($mystring =~ m/^(.{0,32766}){0,3}test/s) { print "Yes\n"; }
(32766 being the max repetitions in Perl)

Unfortunately, in Python this does not work and raises a "nothing to repeat" sre_constants error:
re.search('(?s)\A(.{0,65535}){0,3}test', 'test')

This, however works, which yields 65536 repetitions of DOTALL:
re.search('(?s)\A.{0,65535}.{0,1}test', 'test')

In the end this solves my problem sort or less, but requires extra logic in my script and complicates stuff unnecessary.

A suggestion might be to make repetitions of repeats possible?

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue13169>
_______________________________________


More information about the Python-bugs-list mailing list