【问题标题】:How to parse for tags with '+' in python如何在python中解析带有'+'的标签
【发布时间】:2009-06-26 11:09:32
【问题描述】:

当我尝试编译这个时,我得到一个“没有重复”的错误:

search = re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '+test', re.I)

问题是“+”号。我该如何处理?

【问题讨论】:

    标签: python regex


    【解决方案1】:
    re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '\+test', re.I)
    

    “+”是正则表达式中的“至少重复一次”量词。它必须遵循可重复的内容,或者如果您想匹配文字“+”,则必须对其进行转义。

    如果您想动态构建正则表达式,这样会更好。

    re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % re.escape('+test'), re.I)
    

    【讨论】:

    • 两者都这么快!这似乎工作正常,它是一个变量 tag = '+test' (或 tag='test') search = re.compile(r'([^a-zA-Z0-9])(%s)([ ^a-zA-Z0-9])' % r'\%s' % tag, re.I) 谢谢你们。
    【解决方案2】:

    转义:

    r'\+test'
    

    加号在正则表达式中有特殊的含义(意思是“匹配前一个一次或多次”)。由于在您的正则表达式中它出现在一个开放的括号之后,因此没有“前一个”可以重复匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-19
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多