【问题标题】:RegEx - stop after first match [duplicate]RegEx - 在第一场比赛后停止[重复]
【发布时间】:2016-11-18 22:17:22
【问题描述】:

我们正在使用此正则表达式从主题中过滤票号。

这是我们正在使用的正则表达式:\\[\\#(.*)\\]

主题通常是这样的:"[#20160708-0020] Hello blah blah"

正则表达式得到我们"20160708-0020",我们可以进一步使用它。

公司有人开始写这样的邮件:"[#20160708-0020] Hello [SQL] blah blah"

所以正则表达式会得到我们"20160708-0020] Hello [SQL",这显然是不正确的。

有没有办法告诉正则表达式在第一场比赛后停止?谢谢! :)

【问题讨论】:

    标签: regex otrs


    【解决方案1】:

    https://regex101.com/r/sY4pG6/1

    \[\#(.*?)\]
    

    你的正则表达式中的* 是贪婪的。它会尽可能多地捕获。

    上面的*? 是懒惰的。它将尽可能少地捕获。这将使您的正则表达式在第一次匹配后停止。

    【讨论】:

    • 感谢这有很大帮助!现在,如果你想在第二次发生后停止,你会怎么做? :)
    【解决方案2】:

    为了在它进一步发展之前阻止它,您需要表达lazy

    \[\#(.*?)\]

    注意星号后面的问号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      • 2021-05-16
      • 2012-03-27
      • 2022-11-23
      相关资源
      最近更新 更多