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

获取密钥的正则表达式问题

  •  4
  • Tarik  · 技术社区  · 14 年前

    我有这样一个模板文本:

    你好{名字},

    谢谢你在{日期}和 我们很高兴在这里再次见到你 {总统}

    所以我想 {#...#} 模板部件并将其放入数组中。

    但我的表情不起作用:

    \b(?<=\{\#)(.*)(?=\#\})\b
    

    此示例文本的结果如下:

    {#Something#} Hello {#Brand#} 
    

    结果:

    Something#} Hello {#Brand

    2 回复  |  直到 14 年前
        1
  •  4
  •   Hun1Ahpu    14 年前

    只是添加?对于这样的懒惰:

    \b(?<=\{\#)(.*?)(?=\#\})\b
    

    *? means 尽可能少的重复

        2
  •  3
  •   Damian Powell    14 年前

    这个怎么样? {#([^#]+)#}

    以下是powershell脚本中使用的示例:

    $input = "{#Something#} Hello {#Brand#}"
    
    $match = [regex]::Match($input, "{#([^#]+)#}")
    
    $i = 0
    
    while ($match.Success) {
        $i++
        write-host ("Match {0}: '{1}'" -f $i, $match.Groups[1].Value)
        $match = $match.NextMatch()
    }
    

    这就是它的输出:

    Match 1: 'Something'
    Match 2: 'Brand'