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

如何使用正则提取URL斜杠间及/products/后到斜杠或句点的文本

正则调整方案:提取/products/后、/或.前的路径片段

需求说明

需要从URL路径中提取固定规则片段:

  • 匹配起点:字符串中/products/的结束位置
  • 匹配终点:起点后第一次出现正斜杠/ 或者 句点.的位置
  • 测试样例与预期结果:
    • 样例1:www.site.com/products/pants.html → 提取结果pants
    • 样例2:www.site.com/products/shoes/sneakers.html → 提取结果shoes

原有正则问题

你之前写的正则(?<=/products/).*($.|/)存在3个明显错误:

  • 边界符写法错误:$.为无效逻辑,既不能匹配句点,还会错误匹配行尾位置
  • 匹配模式错误:.*为贪婪匹配,会尽可能向后匹配最长字符串,不会在第一个边界处停止
  • 结果包含多余内容:终止边界/会被纳入匹配结果,无法直接拿到目标文本

可用正则方案

直接使用字符集取反的写法即可,匹配效率最高,无需额外捕获组:

(?<=/products/)[^/.]+

逻辑拆解

  • (?<=/products/):正向回顾断言,仅定位/products/之后的位置作为匹配起点,该段内容不会进入最终匹配结果
  • [^/.]+:匹配1个及以上连续字符,这些字符不能是/也不能是.,遇到第一个/或.就自动终止匹配,刚好符合边界要求,不会把终止符纳入结果。

如果习惯用断言写终止边界,也可以用非贪婪匹配的写法,效果一致但性能稍差:

(?<=/products/).*?(?=[/.])

匹配验证

两个测试样例均能准确拿到目标结果:

  1. 对www.site.com/products/pants.html,匹配到/products/后连续读取非/非.字符,到.html前的句点处停止,返回pants
  2. 对www.site.com/products/shoes/sneakers.html,匹配到/products/后连续读取非/非.字符,到后续第一个路径斜杠处停止,返回shoes

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:57:09