mirror of
https://github.com/python/cpython.git
synced 2025-07-30 06:34:15 +00:00
Issue #1700, reported by Nguyen Quan Son, fix by Fredruk Lundh:
Regular Expression inline flags not handled correctly for some unicode characters. (Forward port from 2.5.2.)
This commit is contained in:
parent
1beea3be3e
commit
ae04c3356e
3 changed files with 34 additions and 1 deletions
|
@ -525,7 +525,7 @@ def compile(p, flags=0):
|
||||||
indexgroup[i] = k
|
indexgroup[i] = k
|
||||||
|
|
||||||
return _sre.compile(
|
return _sre.compile(
|
||||||
pattern, flags, code,
|
pattern, flags | p.pattern.flags, code,
|
||||||
p.pattern.groups-1,
|
p.pattern.groups-1,
|
||||||
groupindex, indexgroup
|
groupindex, indexgroup
|
||||||
)
|
)
|
||||||
|
|
|
@ -642,6 +642,36 @@ class ReTests(unittest.TestCase):
|
||||||
self.assertEqual(re.compile("bla").match(a), None)
|
self.assertEqual(re.compile("bla").match(a), None)
|
||||||
self.assertEqual(re.compile("").match(a).groups(), ())
|
self.assertEqual(re.compile("").match(a).groups(), ())
|
||||||
|
|
||||||
|
def test_inline_flags(self):
|
||||||
|
# Bug #1700
|
||||||
|
upper_char = unichr(0x1ea0) # Latin Capital Letter A with Dot Bellow
|
||||||
|
lower_char = unichr(0x1ea1) # Latin Small Letter A with Dot Bellow
|
||||||
|
|
||||||
|
p = re.compile(upper_char, re.I | re.U)
|
||||||
|
q = p.match(lower_char)
|
||||||
|
self.assertNotEqual(q, None)
|
||||||
|
|
||||||
|
p = re.compile(lower_char, re.I | re.U)
|
||||||
|
q = p.match(upper_char)
|
||||||
|
self.assertNotEqual(q, None)
|
||||||
|
|
||||||
|
p = re.compile('(?i)' + upper_char, re.U)
|
||||||
|
q = p.match(lower_char)
|
||||||
|
self.assertNotEqual(q, None)
|
||||||
|
|
||||||
|
p = re.compile('(?i)' + lower_char, re.U)
|
||||||
|
q = p.match(upper_char)
|
||||||
|
self.assertNotEqual(q, None)
|
||||||
|
|
||||||
|
p = re.compile('(?iu)' + upper_char)
|
||||||
|
q = p.match(lower_char)
|
||||||
|
self.assertNotEqual(q, None)
|
||||||
|
|
||||||
|
p = re.compile('(?iu)' + lower_char)
|
||||||
|
q = p.match(upper_char)
|
||||||
|
self.assertNotEqual(q, None)
|
||||||
|
|
||||||
|
|
||||||
def run_re_tests():
|
def run_re_tests():
|
||||||
from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR
|
from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR
|
||||||
if verbose:
|
if verbose:
|
||||||
|
|
|
@ -348,6 +348,9 @@ Core and builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #1700: Regular expression inline flags incorrectly handle certain
|
||||||
|
unicode characters.
|
||||||
|
|
||||||
- Issue #1689: PEP 3141, numeric abstract base classes.
|
- Issue #1689: PEP 3141, numeric abstract base classes.
|
||||||
|
|
||||||
- Tk issue #1851526: Return results from Python callbacks to Tcl as
|
- Tk issue #1851526: Return results from Python callbacks to Tcl as
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue