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

Golang正则提取URL路径时如何匹配获取包含目标字符的完整片段

问题描述
  • 目标:从指定格式的流媒体链接字符串中提取固定位置的路径片段
  • 待处理原始链接:
https://arteptweb-vh.akamaihd.net/i/am/ptweb/100000/100000/100095-000-A_0_VO-STE%5BANG%5D_AMM-PTWEB_XQ.1V7rLEYkPH.smil/master.m3u8
  • 预期输出结果:100000/100000/100095-000-A_
  • 当前Golang环境使用的正则:
^.*?(/[i,na,fm,d]([,/]?)(/am/ptweb/|.+=.+,))([^_]*).*?$
  • 故障表现:第4个捕获组仅返回100000/100000/100095-000-A,缺失A字符后方的下划线,不符合预期。
故障原因

原正则第4个捕获组使用[^_]*作为匹配规则,该规则会连续匹配所有非下划线字符,遇到第一个下划线就立刻停止匹配,因此直接把目标片段末尾的下划线排除在捕获范围外,导致结果缺失。

修正方案

仅需调整第4个捕获组的匹配规则,将末尾的下划线纳入捕获范围即可,修正后正则如下:

^.*?(/[i,na,fm,d]([,/]?)(/am/ptweb/|.+=.+,))([^_]*_).*?$
  • 调整逻辑:将原有捕获组的([^_]*)修改为([^_]*_),在匹配完连续非下划线字符后,额外匹配紧接的第一个下划线,刚好覆盖预期结果的末尾字符。
  • 验证结果:在Golang环境中使用该正则匹配目标链接,第4个捕获组将正确返回100000/100000/100095-000-A_,符合预期。

补充说明:原正则字符组[i,na,fm,d]中写入的逗号会被识别为需要匹配的普通字符,若业务场景不需要匹配路径中带逗号的情况,可以将该部分修正为(i|na|fm|d)提升匹配严谨性,不影响本次下划线缺失问题的修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:46:02