【问题标题】:Python - Match substring occurrences between { } with regexPython - 使用正则表达式匹配 {} 之间出现的子字符串
【发布时间】:2015-04-03 01:41:59
【问题描述】:

我正在尝试使用正则表达式在两个选择器“{”和“}”之间搜索一个或多个变量子字符串。如果找到多个,则输出应该是一个列表。

这是一个字符串的例子:

mystring = "foofoofoo{something}{anything}foofoofoo"

这是我使用的正则表达式:

re.findall(r"^.*(\{.*\}).*$", mystring)

但它给了我以下输出:{anything}

我尝试过使用r"(\{.*\})",它返回给我{something}{anything},这几乎很好,只是它不是一个列表。

有什么想法吗?

【问题讨论】:

    标签: python regex string match


    【解决方案1】:

    从您的正则表达式中删除锚点和.*,使其仅从{ 捕获到}

    >>> mystring = "foofoofoo{something}{anything}foofoofoo";
    >>> re.findall(r"(\{[^}]*\})", mystring);
    ['{something}', '{anything}']
    

    要从匹配项中跳过 {},请使用捕获的组:

    >>> re.findall(r"\{([^}]*)\}", mystring);
    ['something', 'anything']
    

    【讨论】:

    • 无需环顾,只需捕获内容:{(.*?)}
    【解决方案2】:
    re.findall(r"({.*?})", mystring)
    

    让你的 * 不贪心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 2010-11-19
      • 2020-10-19
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      相关资源
      最近更新 更多