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

正则表达式排除0次及以上分组问题:提取URL指定数字

解决从URL中提取目标数字的正则问题

嘿,我明白你卡在这的原因了——之前的正则里.*\-是贪婪匹配,它会尽可能匹配到最后一个横杠,所以第一个URL里最后一个横杠后面的2就被错误捕获了,哪怕非捕获分组存在也没用,因为贪婪匹配优先把后面的内容都吞掉了。

给你几个可行的解决方案:

方案1:使用正向断言锁定目标数字的位置

这个正则会匹配横杠后的数字,且确保该数字后面要么是至少两个连续横杠,要么是URL的结尾,完美适配你的两个URL场景:

-(\d+)(?=-{2,}|$)
  • 对第一个URL http://www.test.in/some--wonders-1234567---2,会捕获1234567(因为它后面跟着---)
  • 对第二个URL http://www.test.in/some--wonders-1234567,会捕获1234567(因为它后面是URL结尾)

方案2:限制前面的匹配为非贪婪模式

把之前的.*改成非贪婪的.*?,同时调整非捕获分组的匹配逻辑,确保它能覆盖后面的可选后缀:

.*?-(\d+)(?:-{2,}\d)?$

这里的.*?会尽可能少地匹配内容,直到遇到第一个能让整个正则匹配成功的横杠,这样就会优先捕获1234567而不是最后的2。

方案3:基于URL结构精准匹配

如果你的URL结构固定是some--wonders-后面跟着目标数字,那可以直接定位这个前缀,匹配更精准:

some--wonders-(\d+)

这个方法最直接,完全不会受后面的额外后缀影响。

你可以根据自己的实际URL场景选择最合适的方案,试试第一个方案应该就能解决你的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:45:27