如何在python3中将复杂的正则表达式写为字符串?

时间:2013-06-30 23:44:11

标签: python regex python-3.x

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

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

工作正常。但是因为有“和”迹象,我需要逃避它们。所以我这样做:

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

这给了我''不平衡的括号'错误。 我也尝试过:

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

所有这些反斜杠是否会让人感到困惑,不知怎的?很难理解,无需添加更多反斜杠来逃避反斜杠......

1 个答案:

答案 0 :(得分:4)

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

>>> re.compile(r'(?<!\\)(?:(\')|")(?(1)(\\\'|[^\'\r])+?\'|(\\"|[^\r"])+?")')
<_sre.SRE_Pattern object at 0x242aa60>