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

问题描述 投票:-3回答:1

我有这个正则表达式/ 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中有效,我错过了什么?

python regex
1个回答
3
投票

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

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

解决方案是使用原始字符串,以便您的反斜杠不会被替换两次:

REGISTRY_REGEX = re.compile(r"((HKEY(?:_\w+)+|HK[CLU][RUMC])\\([a-zA-Z\d\/\\.{}\s-]+))")
© www.soinside.com 2019 - 2024. All rights reserved.