diff options
-rw-r--r-- | Lib/sre_compile.py | 3 | ||||
-rwxr-xr-x | Lib/test/re_tests.py | 22 |
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'), ] |