SRE didn't handle character category followed by hyphen inside a
character class. Fix provided by Andrew Kuchling. Closes bug
#116251.
diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py
index fcf5bcc..9cbbc02 100644
--- a/Lib/sre_parse.py
+++ b/Lib/sre_parse.py
@@ -393,6 +393,8 @@
# potential range
this = source.get()
if this == "]":
+ if code1[0] is IN:
+ code1 = code1[1][0]
set.append(code1)
set.append((LITERAL, ord("-")))
break
diff --git a/Lib/test/re_tests.py b/Lib/test/re_tests.py
index 8675224..7c54175 100755
--- a/Lib/test/re_tests.py
+++ b/Lib/test/re_tests.py
@@ -619,4 +619,6 @@
(r' (?x)foo ', 'foo', SUCCEED, 'found', 'foo'),
# bug 115618: negative lookahead
(r'(?<!abc)(d.f)', 'abcdefdof', SUCCEED, 'found', 'dof'),
+ # bug 116251: character class bug
+ (r'[\w-]+', 'laser_beam', SUCCEED, 'found', 'laser_beam'),
]