正则表达式 - 在第一场比赛后停止

RegEx - stop after first match

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

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

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

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

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

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

有没有办法让正则表达式在第一次匹配后停止?谢谢! :)

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

\[\#(.*?)\]

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

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

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

\[\#(.*?)\]

注意星号后面的问号。