You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式匹配问题:如何仅捕获第一个Ticket ID数值

解决正则捕获第一个Ticket ID的问题

你的问题出在开头的.*是贪婪匹配,它会从字符串开头一直匹配到最后一个[Ticket ID: #的位置,所以最终捕获的是最后一个ID。你之前只给\d*加?没用,因为贪婪的是前面的.*,不是数字部分。

给你两种解决办法:

  • 方法一:直接匹配第一个出现的Ticket ID
    去掉多余的锚定和全局匹配,用这个正则:

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

    这个正则会直接找到字符串中第一个符合格式的Ticket ID,捕获组里就是你要的第一个ID值。

  • 方法二:保留全局锚定但改用非贪婪匹配
    如果必须确保匹配整个字符串(比如验证字符串结构),把开头的.*改成非贪婪的.*?,让它匹配到第一个[Ticket ID: #就停止:

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

    这样开头的.*?会尽可能少匹配,优先找到第一个Ticket ID,捕获组就能拿到第一个ID了。

另外建议把\d*改成\d+,因为ID应该是至少一位数字,*会匹配空值,不符合实际场景。

内容的提问来源于stack exchange,提问作者charlie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:22:02