所以,我有这个正则表达式,我想编译:
(?<!\\)(?:(')|")(?(1)(\\'|[^'\r])+?'|(\\"|[^\r"])+?")
工作正常。但是因为有“和”迹象,我需要逃避它们。所以我这样做:
re.compile('''(?<!\\)(?:(')|")(?(1)(\\'|[^'\r])+?'|(\\"|[^\r"])+?")''')
这给了我''不平衡的括号'错误。 我也尝试过:
re.compile('(?<!\\)(?:(\')|")(?(1)(\\\'|[^\'\r])+?\'|(\\"|[^\r"])+?")')
所有这些反斜杠是否会让人感到困惑,不知怎的?很难理解,无需添加更多反斜杠来逃避反斜杠......
答案 0 :(得分:4)
是的,他们是。使用原始字符串。
>>> re.compile(r'(?<!\\)(?:(\')|")(?(1)(\\\'|[^\'\r])+?\'|(\\"|[^\r"])+?")')
<_sre.SRE_Pattern object at 0x242aa60>