Python正则表达式:sre_constants.error:不平衡的括号

时间:2015-12-29 18:00:13

标签: python regex

我有这个正则表达式/ python代码:

REGISTRY_REGEX = re.compile("((HKEY(?:_\w+)+|HK[CLU][RUMC])\\([a-zA-Z\d\/\\.{}\s-]+))")

应匹配此字符串:

HKLM\SYSTEM\CurrentControlSet\Services\aRandomServiceName

当我运行我的python脚本时,它返回:

Traceback (most recent call last):
  File "regex_id.py", line 11, in <module>
    REGISTRY_REGEX = re.compile("((HKEY(?:_\w+)+|HK[CLU][RUMC])\\([a-zA-Z\d\/\\.{}\s-]+)))")
  File "/usr/lib/python2.7/re.py", line 194, in compile
    return _compile(pattern, flags)
  File "/usr/lib/python2.7/re.py", line 251, in _compile
    raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis

这个正则表达式似乎在RegExr中有用,我缺少什么?

1 个答案:

答案 0 :(得分:3)

首先,您的问题中的表达式和回溯中的表达式是不同的。前者有两个右括号,后者有三个。

第二个问题是两者都有太多的右括号。因为你使用的是双引号,所以你的反斜杠在被编译之前被替换为

解决方法是使用原始字符串,这样你的反斜杠就不会被替换两次:

REGISTRY_REGEX = re.compile(r"((HKEY(?:_\w+)+|HK[CLU][RUMC])\\([a-zA-Z\d\/\\.{}\s-]+))")