Patch #681152: Support escaped Unicode characters in classes. Fixes #612074.

Will backport to 2.2.
This commit is contained in:
Martin v. Löwis 2003-04-19 08:37:24 +00:00
parent 910ae6283a
commit 53d93adc46
2 changed files with 5 additions and 1 deletions

View File

@ -254,7 +254,7 @@ def _class_escape(source, escape):
if len(escape) != 2:
raise error, "bogus escape: %s" % repr("\\" + escape)
return LITERAL, atoi(escape, 16) & 0xff
elif str(escape[1:2]) in OCTDIGITS:
elif escape[1:2] in OCTDIGITS:
# octal escape (up to three digits)
while source.next in OCTDIGITS and len(escape) < 5:
escape = escape + source.get()

View File

@ -96,6 +96,10 @@ test(r"""sre.match('.*?cd', 20000*'abc'+'de').end(0)""", 60001)
# non-simple '*?' still recurses and hits the recursion limit
test(r"""sre.search('(a|b)*?c', 10000*'ab'+'cd').end(0)""", None, RuntimeError)
# bug 612074
pat=u"["+sre.escape(u"\u2039")+u"]"
test(r"""sre.compile(pat) and 1""", 1, None)
if verbose:
print 'Running tests on sre.sub'