diff -r 61e536bdba2e Lib/sre_parse.py --- a/Lib/sre_parse.py Sat Apr 13 18:07:15 2013 +0300 +++ b/Lib/sre_parse.py Sat Apr 13 12:01:27 2013 -0400 @@ -549,7 +549,8 @@ if not name: raise error("missing group name") if not isname(name): - raise error, "bad character in group name" + raise error("bad character in group name %r" % + name) elif sourcematch("="): # named backreference name = "" @@ -563,7 +564,8 @@ if not name: raise error("missing group name") if not isname(name): - raise error, "bad character in group name" + raise error("bad character in backref group name " + "%r" % name) gid = state.groupdict.get(name) if gid is None: raise error, "unknown group name" diff -r 61e536bdba2e Lib/test/test_re.py --- a/Lib/test/test_re.py Sat Apr 13 18:07:15 2013 +0300 +++ b/Lib/test/test_re.py Sat Apr 13 12:01:27 2013 -0400 @@ -2,6 +2,7 @@ from test.test_support import precisionbigmemtest, _2G, cpython_only import re from re import Scanner +import sre_constants import sys import string import traceback @@ -886,6 +887,16 @@ self.assertRaises(OverflowError, re.compile, r".{,%d}" % MAXREPEAT) self.assertRaises(OverflowError, re.compile, r".{%d,}?" % MAXREPEAT) + def test_backref_group_name_in_exception(self): + # Issue 17341: Poor error message when compiling invalid regex + with self.assertRaisesRegexp(sre_constants.error, ''): + re.compile('(?P=)') + + def test_group_name_in_exception(self): + # Issue 17341: Poor error message when compiling invalid regex + with self.assertRaisesRegexp(sre_constants.error, '\?foo'): + re.compile('(?P)') + def run_re_tests(): from test.re_tests import tests, SUCCEED, FAIL, SYNTAX_ERROR diff -r 61e536bdba2e Misc/ACKS --- a/Misc/ACKS Sat Apr 13 18:07:15 2013 +0300 +++ b/Misc/ACKS Sat Apr 13 12:01:27 2013 -0400 @@ -674,6 +674,7 @@ Mike Meyer Piotr Meyer Steven Miale +Jason Michalski Trent Mick Tom Middleton Stan Mihai