【问题标题】:How to not match between curly braces?花括号之间如何不匹配?
【发布时间】:2013-07-24 16:22:00
【问题描述】:

说我想匹配:

r'(?P<as>a+)'

如何仅使用正则表达式语法忽略大括号之间的所有匹配项:

"{aabaa} a" #I just want the last 'a' matched

【问题讨论】:

  • re.sub('\{[^}]\}','',text) ?

标签: python regex match


【解决方案1】:

正则表达式对于 not 匹配并不是真正的最佳选择。但是您可以使用以下技巧:

a+(?![^{}]*})

但如果有不平衡的{},这将不起作用。

【讨论】:

    【解决方案2】:

    一种选择可能是在运行正则表达式之前删除大括号内的内容。

    >>> pat = r'(?P<as>a+)'
    >>> string = "{aabaa} a"
    >>> m = re.search(pat, re.sub(r'\{.*?\}', '', string))
    >>> m.group('as')
    'a'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多