我有这个正则表达式/ 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中有用,我缺少什么?
答案 0 :(得分:3)
首先,您的问题中的表达式和回溯中的表达式是不同的。前者有两个右括号,后者有三个。
第二个问题是两者都有太多的右括号。因为你使用的是双引号,所以你的反斜杠在被
解决方法是使用原始字符串,这样你的反斜杠就不会被替换两次:
REGISTRY_REGEX = re.compile(r"((HKEY(?:_\w+)+|HK[CLU][RUMC])\\([a-zA-Z\d\/\\.{}\s-]+))")