summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/sre_compile.py3
-rwxr-xr-xLib/test/re_tests.py22
2 files changed, 19 insertions, 6 deletions
diff --git a/Lib/sre_compile.py b/Lib/sre_compile.py
index c2996fc..ab2a2cc 100644
--- a/Lib/sre_compile.py
+++ b/Lib/sre_compile.py
@@ -23,9 +23,10 @@ def _compile(code, pattern, flags):
if op in (LITERAL, NOT_LITERAL):
if flags & SRE_FLAG_IGNORECASE:
emit(OPCODES[OP_IGNORE[op]])
+ emit(_sre.getlower(av, flags))
else:
emit(OPCODES[op])
- emit(av)
+ emit(av)
elif op is IN:
if flags & SRE_FLAG_IGNORECASE:
emit(OPCODES[OP_IGNORE[op]])
diff --git a/Lib/test/re_tests.py b/Lib/test/re_tests.py
index 2d3155d..9daf8c4 100755
--- a/Lib/test/re_tests.py
+++ b/Lib/test/re_tests.py
@@ -598,7 +598,7 @@ xyzabc
(r'\xff', '\377', SUCCEED, 'found', chr(255)),
# new \x semantics
- (r'\x00ff', '\377', FAIL, 'found', chr(255)),
+ (r'\x00ff', '\377', FAIL),
# (r'\x00ff', '\377', SUCCEED, 'found', chr(255)),
(r'\t\n\v\r\f\a\g', '\t\n\v\r\f\ag', SUCCEED, 'found', '\t\n\v\r\f\ag'),
('\t\n\v\r\f\a\g', '\t\n\v\r\f\ag', SUCCEED, 'found', '\t\n\v\r\f\ag'),
@@ -610,11 +610,13 @@ xyzabc
# xmllib problem
(r'(([a-z]+):)?([a-z]+)$', 'smil', SUCCEED, 'g1+"-"+g2+"-"+g3', 'None-None-smil'),
- # bug 111869 (PRE/PCRE fails on this one, SRE doesn't)
+ # bug 110866: reference to undefined group
+ (r'((.)\1+)', '', SYNTAX_ERROR),
+ # bug 111869: search (PRE/PCRE fails on this one, SRE doesn't)
(r'.*d', 'abc\nabd', SUCCEED, 'found', 'abd'),
# bug 112468: various expected syntax errors
- ('(', '', SYNTAX_ERROR),
- ('[\\41]', '!', SUCCEED, 'found', '!'),
+ (r'(', '', SYNTAX_ERROR),
+ (r'[\41]', '!', SUCCEED, 'found', '!'),
# bug 114033: nothing to repeat
(r'(x?)?', 'x', SUCCEED, 'found', 'x'),
# bug 115040: rescan if flags are modified inside pattern
@@ -623,5 +625,15 @@ xyzabc
(r'(?<!abc)(d.f)', 'abcdefdof', SUCCEED, 'found', 'dof'),
# bug 116251: character class bug
(r'[\w-]+', 'laser_beam', SUCCEED, 'found', 'laser_beam'),
-
+ # bug 123769+127259: non-greedy backtracking bug
+ (r'.*?\S *:', 'xx:', SUCCEED, 'found', 'xx:'),
+ (r'a[ ]*?\ (\d+).*', 'a 10', SUCCEED, 'found', 'a 10'),
+ (r'a[ ]*?\ (\d+).*', 'a 10', SUCCEED, 'found', 'a 10'),
+ # bug 127259: \Z shouldn't depend on multiline mode
+ (r'(?ms).*?x\s*\Z(.*)','xx\nx\n', SUCCEED, 'g1', ''),
+ # bug 128899: uppercase literals under the ignorecase flag
+ (r'(?i)M+', 'MMM', SUCCEED, 'found', 'MMM'),
+ (r'(?i)m+', 'MMM', SUCCEED, 'found', 'MMM'),
+ (r'(?i)[M]+', 'MMM', SUCCEED, 'found', 'MMM'),
+ (r'(?i)[m]+', 'MMM', SUCCEED, 'found', 'MMM'),
]