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

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

  •  5
  • Travis  · 技术社区  · 17 年前

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

    "/{.*}/"

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

    这是我的{string},它不能正常工作

    {string},它不起作用

    {string}

    我怎样才能让它与第一个结果相匹配?

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

    问号表示“不贪婪”

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

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

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

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

    我不确定如何获得无限的深度,或者使用正则表达式是否可行

        4
  •  0
  •   cdm9002    17 年前

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

    /{.*?}/
    

    /{[^}]*}/