代码之家  ›  专栏  ›  技术社区  ›  Brent Baisley

正则表达式,匹配{}之间的字符

  •  0
  • Brent Baisley  · 技术社区  · 15 年前

    我正在尝试查找包含<或>在{}之间。这是在HTML和我有麻烦得到它是“ungreedy”。

    所以我想找到与这些字符串匹配的文本:

    {test > 3}
    {testing >= 3 : comment}
    {example < 4}
    

    我已经尝试了许多正则表达式,但是所有的正则表达式似乎都在结束后继续}并且包括了<或>。例如,我尝试了这个正则表达式

    {.*?(<|>).*?}
    

    但最终匹配的文本如下:

    {if true}<b>testing</b>{/if}
    

    4 回复  |  直到 15 年前
        1
  •  4
  •   qbi    15 年前

    这应该可以做到:

    {[^}]*(<|>).*}
    
        2
  •  1
  •   ircmaxell    15 年前

    更有效的正则表达式(因为没有非贪婪匹配):

    '#{[^}<>]*[<>]+[^}]*}#'
    

    {foo <> bar} ...

        3
  •  0
  •   Mike Caron    15 年前
    {[^}]*?(<|>)[^{]*?}
    

    试试看。注意,我替换了 . 使用character类表示除左/右花括号以外的所有内容。

        4
  •  0
  •   Mark Baker    15 年前