1

所以,我有这个我想编译的正则表达式:

(?<!\\)(?:(')|")(?(1)(\\'|[^'\r])+?'|(\\"|[^\r"])+?")

它工作正常。但是因为有 ' 和 " 符号,我需要逃避它们。所以我这样做:

re.compile('''(?<!\\)(?:(')|")(?(1)(\\'|[^'\r])+?'|(\\"|[^\r"])+?")''')

这给了我“不平衡括号”错误。我也试过:

re.compile('(?<!\\)(?:(\')|")(?(1)(\\\'|[^\'\r])+?\'|(\\"|[^\r"])+?")')

不知何故,所有这些反斜杠都会混淆它吗?无需添加更多反斜杠来逃避反斜杠就很难理解......

4

1 回答 1

4

对,他们是。使用原始字符串。

>>> re.compile(r'(?<!\\)(?:(\')|")(?(1)(\\\'|[^\'\r])+?\'|(\\"|[^\r"])+?")')
<_sre.SRE_Pattern object at 0x242aa60>
于 2013-06-30T23:47:00.857 回答