diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/sre_compile.py | 2 | ||||
-rw-r--r-- | Lib/sre_constants.py | 2 | ||||
-rw-r--r-- | Lib/sre_parse.py | 2 | ||||
-rwxr-xr-x | Lib/test/re_tests.py | 3 |
4 files changed, 6 insertions, 3 deletions
diff --git a/Lib/sre_compile.py b/Lib/sre_compile.py index 97a57e2..dc508e5 100644 --- a/Lib/sre_compile.py +++ b/Lib/sre_compile.py @@ -222,7 +222,7 @@ def _optimize_charset(charset, fixup): def _simple(av): # check if av is a "simple" operator lo, hi = av[2].getwidth() - if lo == 0: + if lo == 0 and hi == MAXREPEAT: raise error, "nothing to repeat" return lo == hi == 1 and av[2][0][0] != SUBPATTERN diff --git a/Lib/sre_constants.py b/Lib/sre_constants.py index 5a20930..ea649c0 100644 --- a/Lib/sre_constants.py +++ b/Lib/sre_constants.py @@ -9,6 +9,8 @@ # See the sre.py file for information on usage and redistribution. # +MAXREPEAT = 65535 + # should this really be here? class error(Exception): diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py index 9cbbc02..7c36d4f 100644 --- a/Lib/sre_parse.py +++ b/Lib/sre_parse.py @@ -12,8 +12,6 @@ import string, sys from sre_constants import * -MAXREPEAT = 65535 - SPECIAL_CHARS = ".\\[{()*+?^$|" REPEAT_CHARS = "*+?{" diff --git a/Lib/test/re_tests.py b/Lib/test/re_tests.py index 7c54175..2d3155d 100755 --- a/Lib/test/re_tests.py +++ b/Lib/test/re_tests.py @@ -615,10 +615,13 @@ xyzabc # bug 112468: various expected syntax errors ('(', '', SYNTAX_ERROR), ('[\\41]', '!', SUCCEED, 'found', '!'), + # bug 114033: nothing to repeat + (r'(x?)?', 'x', SUCCEED, 'found', 'x'), # bug 115040: rescan if flags are modified inside pattern (r' (?x)foo ', 'foo', SUCCEED, 'found', 'foo'), # bug 115618: negative lookahead (r'(?<!abc)(d.f)', 'abcdefdof', SUCCEED, 'found', 'dof'), # bug 116251: character class bug (r'[\w-]+', 'laser_beam', SUCCEED, 'found', 'laser_beam'), + ] |