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

求助修正preg_match正则:提取字符串最后连字符后的数字

修正preg_match提取目标数字的方案

嘿,你的问题很明确——要从Cat-115/Ads-733-49里提取Ads-733-后面的最后一段数字49对吧?你原来的正则/Ads-\K\d+/会匹配到Ads-后面的第一个数字序列(也就是733),这不符合你的需求,我们来调整一下:

方法一:使用捕获组

这种方式直观易懂,通过括号捕获我们需要的目标数字:

$destination = "Cat-115/Ads-733-49";
preg_match('/Ads-\d+-(\d+)$/', $destination, $m);
$result = $m[1]; // 结果是49

正则解释:

  • Ads-:精准匹配字符串里的Ads-
  • \d+:匹配1个或多个数字(对应这里的733)
  • -:匹配连字符
  • (\d+):捕获我们需要的目标数字
  • $:确保匹配到字符串末尾,避免后续有其他内容干扰

方法二:使用\K忽略前置内容

如果你习惯用\K来简化结果提取,可以调整正则,让它跳过前面的Ads-xxx-部分:

$destination = "Cat-115/Ads-733-49";
preg_match('/Ads-\d+-\K\d+$/', $destination, $m);
$result = $m[0]; // 结果是49

正则解释:

  • Ads-\d+-:匹配Ads-加上数字和连字符的部分
  • \K:重置匹配起点,前面的内容不会被包含在最终匹配结果里
  • \d+$:匹配到字符串末尾的数字序列,也就是我们要的49

如果你的字符串结构固定(最后一段总是数字),也可以用更简洁的正则/-(\d+)$/,直接匹配最后一个连字符后的数字,但前面的精准匹配更安全,能避免其他连字符的干扰哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:25:29