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

如何提取不定长URL中.mp3前的ID并拼接为指定格式链接

URL提取ID并重组方案

不管URL中间路径有多少层、长度多少,不需要写死路径匹配规则,只靠URL本身的固定特征就能完成提取重组,核心逻辑:

  • 提取URL的协议+根域名部分(即https://urlexample.com段)
  • 提取最后一个/和.mp3后缀之间的内容,就是需要的ID字段
  • 按根域名/audio/ID的格式拼接即可得到目标结果

通用正则方案(跨语言可用)

直接用正则捕获两个需要的片段,替换拼接就行,适配任意长度的中间路径:
正则匹配规则:

^(https?://[^/]+)/.*?/([^/]+)\.mp3$

替换模板:

$1/audio/$2

常用语言实现示例

  • Python
import re

def format_mp3_url(raw_url: str) -> str:
    return re.sub(r'^(https?://[^/]+)/.*?/([^/]+)\.mp3$', r'\1/audio/\2', raw_url)

# 测试
test_urls = [
    "https://urlexample.com/EXAMPLE_STRING/media/example/audio/20227/07/1657142074431_15789.mp3",
    "https://urlexample.com/media/THIS_TEXT_IS_1657130179082_24048.mp3"
]
for u in test_urls:
    print(format_mp3_url(u))

运行输出:

https://urlexample.com/audio/1657142074431_15789
https://urlexample.com/audio/THIS_TEXT_IS_1657130179082_24048
  • JavaScript
const formatMp3Url = (rawUrl) => {
  return rawUrl.replace(/^(https?:\/\/[^/]+)\/.*?\/([^/]+)\.mp3$/, '$1/audio/$2')
}

// 测试
const testUrls = [
  "https://urlexample.com/EXAMPLE_STRING/media/example/audio/20227/07/1657142074431_15789.mp3",
  "https://urlexample.com/media/THIS_TEXT_IS_1657130179082_24048.mp3"
]
testUrls.forEach(u => console.log(formatMp3Url(u)))

字符串切割实现(无正则依赖)

如果不想用正则,直接靠字符串切割也能实现,逻辑更直白,同样不受中间路径长度影响:

def format_mp3_url_split(raw_url: str) -> str:
    # 移除.mp3后缀
    url_no_ext = raw_url.removesuffix('.mp3')
    # 按斜杠拆分取最后一段,就是目标ID
    target_id = url_no_ext.split('/')[-1]
    # 定位根域名结束位置(即域名后第一个斜杠的索引)
    domain_end_idx = url_no_ext.find('/', len('https://'))
    root_domain = url_no_ext[:domain_end_idx]
    return f"{root_domain}/audio/{target_id}"

如果遇到URL带查询参数(比如.mp3?from=search这类格式),只需要在处理前先把?及后续内容截断,再走上面的逻辑即可,不需要调整核心规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:27:49