代码之家  ›  专栏  ›  技术社区  ›  Travis

如何将内部可能结果与正则表达式匹配

  •  2
  • Travis  · 技术社区  · 15 年前

    我有一个正则表达式来匹配字符串中和之间的任何内容。

    “/ {{*}”

    再简单不过了。当我有一行有多个匹配项时,问题就出现了。所以如果我有这样一条线:

    这是我的字符串,它不能正确工作

    正则表达式将匹配

    字符串,它不工作

    而不是

    {String }

    我如何才能让它与第一个结果匹配?

    4 回复  |  直到 15 年前
        1
  •  12
  •   David Hedlund    15 年前

    问号表示“不贪婪”

    "/{.*?}/"
    
        2
  •  3
  •   Matt K    15 年前

    使用包含除右括号之外的所有内容的字符类:

    /{[^}]+}/
    
        3
  •  1
  •   Victor    15 年前

    这将仅适用于深度为1的单个嵌套大括号: {(({.*?})*|.*?)*}

    我不知道如何获得无限的深度,或者是否有可能使用regex

        4
  •  0
  •   cdm9002    15 年前

    默认行为是贪婪匹配,即从第一个到最后一个。使用的延迟匹配?在你的**之后,

    /{.*?}/
    

    或者甚至不用*使用“not a”

    /{[^}]*}/