【问题标题】:How do I write a complex regex as string in python3?如何在 python3 中将复杂的正则表达式编写为字符串?
【发布时间】:2013-06-30 23:44:10
【问题描述】:

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

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

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

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

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

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

所有这些反斜杠是否会以某种方式混淆它?无需添加更多个反斜杠来转义反斜杠就很难理解......

【问题讨论】:

    标签: python regex python-3.x


    【解决方案1】:

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

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

    【讨论】:

    • 啊,这就是我经常看到的那些小 r 的意思。谢谢
    • 使用三引号字符串(如原始帖子中所示)而不是转义引号字符更有意义。
    • 当然,但问题不在于引号。
    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 2017-05-10
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多