Regex在第一次匹配后停止[重复]

jobtbby3  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(123)

此问题在此处已有答案

Regular expression to stop at first match(9个答案)
9天前关闭
我使用的是这个工作正常的正则表达式
第一个月
但是当字符串看起来像这样的时候,我只想得到第一个值,它会得到最后一个值。
[Ticket ID: #12345] test [Ticket ID: #54321] test2
我在正则表达式中添加了?,但没有任何区别
^.*\[Ticket ID\: \#(\d*?)\].*$

jhdbpxl9

jhdbpxl91#

问题是^.*在开始时是贪婪的,所以它会尽可能多地匹配,同时仍然允许regexp的其余部分匹配。如果你把它改为^.*?,你会得到第一个匹配。
但实际上您根本不需要匹配票号之前的任何内容。只需使用

\[Ticket ID: #(\d*)\]

字符串
也不需要转义:#,它们在正则表达式中没有特殊意义。这将返回第一个匹配。

yws3nbqq

yws3nbqq2#

使用 lazy-quantifier 作为第一个 quantifier

^.*?\[Ticket ID\: \#(\d*)\].*$

字符串
或者,使用 match pattern

(?<=\[Ticket ID: #)\d*(?=\])

相关问题