mirror of https://github.com/python/cpython
#13899: \A, \Z, and \B now correctly match the A, Z, and B literals when used inside character classes (e.g. [A]). Patch by Matthew Barnett.
This commit is contained in:
parent
26ed234052
commit
fe8e6e7414
|
@ -235,7 +235,7 @@ def _class_escape(source, escape):
|
|||
if code:
|
||||
return code
|
||||
code = CATEGORIES.get(escape)
|
||||
if code:
|
||||
if code and code[0] == IN:
|
||||
return code
|
||||
try:
|
||||
c = escape[1:2]
|
||||
|
|
|
@ -857,6 +857,12 @@ class ReTests(unittest.TestCase):
|
|||
# Test behaviour when not given a string or pattern as parameter
|
||||
self.assertRaises(TypeError, re.compile, 0)
|
||||
|
||||
def test_bug_13899(self):
|
||||
# Issue #13899: re pattern r"[\A]" should work like "A" but matches
|
||||
# nothing. Ditto B and Z.
|
||||
self.assertEqual(re.findall(r'[\A\B\b\C\Z]', 'AB\bCZ'),
|
||||
['A', 'B', '\b', 'C', 'Z'])
|
||||
|
||||
@bigmemtest(size=_2G, memuse=character_size)
|
||||
def test_large_search(self, size):
|
||||
# Issue #10182: indices were 32-bit-truncated.
|
||||
|
|
|
@ -65,6 +65,7 @@ Chris Barker
|
|||
Anton Barkovsky
|
||||
Nick Barnes
|
||||
Quentin Barnes
|
||||
Matthew Barnett
|
||||
Richard Barran
|
||||
Cesar Eduardo Barros
|
||||
Des Barry
|
||||
|
|
|
@ -199,6 +199,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #13899: \A, \Z, and \B now correctly match the A, Z, and B literals
|
||||
when used inside character classes (e.g. '[\A]'). Patch by Matthew Barnett.
|
||||
|
||||
- Issue #15545: Fix regression in sqlite3's iterdump method where it was
|
||||
failing if the connection used a row factory (such as sqlite3.Row) that
|
||||
produced unsortable objects. (Regression was introduced by fix for 9750).
|
||||
|
|
Loading…
Reference in New Issue