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

求适用于Notepad++/Regex101的正则表达式:仅保留链接

从代码中提取纯HTTP/HTTPS链接的解决方案

问题说明

需要从一段包含HTTP/HTTPS链接的代码中提取所有纯链接,最终输出每行一个链接的列表。现有正则https?://.*?[\s+"]能匹配链接但会附带多余符号,无法得到纯链接。

待处理代码示例:

/**/
  
 jQuery(function($){
  playerInit( 11403, 'Убийца Богов', 'json', [{"id":"0","title":" 176","url":"https://ii-z.ru/11403/176.mp3","error":0,"duration":909,"duration_min":"15:09"},{"id":"1","title":" 177","url":"https://ii-z.ru/11403/177.mp3","error":0,"duration":850,"duration_min":"14:10"},{"id":"2","title":" 178","url":"https://ii-z.ru/11403/178.mp3","error":0,"duration":800,"duration_min":"13:20"},{"id":"3","title":" 179","url":"https://ii-z.ru/11403/179.mp3","error":0,"duration":834,"duration_min":"13:54"},{"id":"4","title":" 180","url":"https://ii-z.ru/11403/180.mp3","error":0,"duration":898,"duration_min":"14:58"},{"id":"5","title":" 181","url":"https://ii-z.ru/11403/181.mp3","error":0,"duration":777,"duration_min":"12:57"},{"id":"6","title":" 182","url":"https://ii-z.ru/11403/182.mp3","error":0,"duration":832,"duration_min":"13:52"},{"id":"7","title":" 183","url":"https://ii-z.ru/11403/183.mp3","error":0,"duration":827,"duration_min":"13:47"},{"id":"8","title":" 184","url":"https://ii-z.ru/11403/184.mp3","error":0,"duration":837,"duration_min":"13:57"},{"id":"9","title":" 185","url":"https://ii-z.ru/11403/185.mp3","error":0,"duration":809,"duration_min":"13:29"},{"id":"10","title":" 186","url":"https://ii-z.ru/11403/186.mp3","error":0,"duration":853,"duration_min":"14:13"},{"id":"11","title":" 187","url":"https://ii-z.ru/11403/187.mp3","error":0,"duration":860,"duration_min":"14:20"},{"id":"12","title":" 188","url":"https://ii-z.ru/11403/188.mp3","error":0,"duration":881,"duration_min":"14:41"},{"id":"13","title":" 189","url":"https://ii-z.ru/11403/189.mp3","error":0,"duration":815,"duration_min":"13:35"},{"id":"14","title":" 190","url":"https://ii-z.ru/11403/190.mp3","error":0,"duration":720,"duration_min":"12:00"},{"id":"15","title":" 191","url":"https://ii-z.ru/11403/191.mp3","error":0,"duration":757,"duration_min":"12:37"},{"id":"16","title":" 192","url":"https://ii-z.ru/11403/192.mp3","error":0,"duration":873,"duration_min":"14:33"},{"id":"17","title":" 193","url":"https://ii-z.ru/11403/193.mp3","error":0,"duration":801,"duration_min":"13:21"},{"id":"18","title":" 194","url":"https://ii-z.ru/11403/194.mp3","error":0,"duration":902,"duration_min":"15:02"},{"id":"19","title":" 195","url":"https://ii-z.ru/11403/195.mp3","error":0,"duration":830,"duration_min":"13:50"},{"id":"20","title":" 196","url":"https://ii-z.ru/11403/196.mp3","error":0,"duration":820,"duration_min":"13:40"},{"id":"21","title":" 197","url":"https://ii-z.ru/11403/197.mp3","error":0,"duration":968,"duration_min":"16:08"},{"id":"22","title":" 198","url":"https://ii-z.ru/11403/198.mp3","error":0,"duration":790,"duration_min":"13:10"},{"id":"23","title":" 199","url":"https://ii-z.ru/11403/199.mp3","error":0,"duration":790,"duration_min":"13:10"}], 'https://audiokniga.one/uploads/posts/2023-11/1699047567_1-1.webp');
 });
 
/**/

期望输出:

https://ii-z.ru/11403/176.mp3
https://ii-z.ru/11403/177.mp3
https://ii-z.ru/11403/178.mp3
...
https://audiokniga.one/uploads/posts/2023-11/1699047567_1-1.webp

解决方案

方案1:优化正则表达式

原正则https?://.*?[\s+"]采用非贪婪匹配,会把结尾的引号或空格也包含进来。可以修改为匹配直到引号或空格为止的所有非空白/非引号字符,直接得到纯链接:

https?://[^"\s]+
  • 解释:
    • https?://:匹配HTTP或HTTPS协议头
    • [^"\s]+:匹配任意数量的非引号、非空白字符,直到遇到引号或空格停止,刚好截断到链接末尾

使用方式:在支持全局匹配的正则工具(如VS Code查找替换、Regex101)中,开启全局匹配(g标志),提取所有匹配结果即可。

方案2:利用JSON解析(更可靠)

观察待处理代码,所有音频链接都在playerInit函数的第四个参数(一个标准JSON数组)中,还有一个图片链接在最后一个参数。用JSON解析能避免正则可能出现的误匹配,更精准:

步骤(浏览器控制台实现):

  1. 打开代码所在页面,打开浏览器开发者工具(F12)的Console标签
  2. 执行以下代码:
// 提取playerInit的参数
const initCall = document.querySelector('script').textContent.match(/playerInit\((.*?)\)/)[1];
const args = initCall.split(',').map(arg => arg.trim());

// 解析音频链接的JSON数组
const audioItems = JSON.parse(args[3]);
audioItems.forEach(item => console.log(item.url));

// 提取最后一个图片链接
const imgUrl = args[args.length - 1].replace(/['"]/g, '');
console.log(imgUrl);
  1. 控制台会输出所有纯链接,直接复制即可。

步骤(Python实现):

import re
import json

# 待处理代码字符串
code = """/**/
  
 jQuery(function($){
  playerInit( 11403, 'Убийца Богов', 'json', [{"id":"0","title":" 176","url":"https://ii-z.ru/11403/176.mp3","error":0,"duration":909,"duration_min":"15:09"},{"id":"1","title":" 177","url":"https://ii-z.ru/11403/177.mp3","error":0,"duration":850,"duration_min":"14:10"},{"id":"2","title":" 178","url":"https://ii-z.ru/11403/178.mp3","error":0,"duration":800,"duration_min":"13:20"},{"id":"3","title":" 179","url":"https://ii-z.ru/11403/179.mp3","error":0,"duration":834,"duration_min":"13:54"},{"id":"4","title":" 180","url":"https://ii-z.ru/11403/180.mp3","error":0,"duration":898,"duration_min":"14:58"},{"id":"5","title":" 181","url":"https://ii-z.ru/11403/181.mp3","error":0,"duration":777,"duration_min":"12:57"},{"id":"6","title":" 182","url":"https://ii-z.ru/11403/182.mp3","error":0,"duration":832,"duration_min":"13:52"},{"id":"7","title":" 183","url":"https://ii-z.ru/11403/183.mp3","error":0,"duration":827,"duration_min":"13:47"},{"id":"8","title":" 184","url":"https://ii-z.ru/11403/184.mp3","error":0,"duration":837,"duration_min":"13:57"},{"id":"9","title":" 185","url":"https://ii-z.ru/11403/185.mp3","error":0,"duration":809,"duration_min":"13:29"},{"id":"10","title":" 186","url":"https://ii-z.ru/11403/186.mp3","error":0,"duration":853,"duration_min":"14:13"},{"id":"11","title":" 187","url":"https://ii-z.ru/11403/187.mp3","error":0,"duration":860,"duration_min":"14:20"},{"id":"12","title":" 188","url":"https://ii-z.ru/11403/188.mp3","error":0,"duration":881,"duration_min":"14:41"},{"id":"13","title":" 189","url":"https://ii-z.ru/11403/189.mp3","error":0,"duration":815,"duration_min":"13:35"},{"id":"14","title":" 190","url":"https://ii-z.ru/11403/190.mp3","error":0,"duration":720,"duration_min":"12:00"},{"id":"15","title":" 191","url":"https://ii-z.ru/11403/191.mp3","error":0,"duration":757,"duration_min":"12:37"},{"id":"16","title":" 192","url":"https://ii-z.ru/11403/192.mp3","error":0,"duration":873,"duration_min":"14:33"},{"id":"17","title":" 193","url":"https://ii-z.ru/11403/193.mp3","error":0,"duration":801,"duration_min":"13:21"},{"id":"18","title":" 194","url":"https://ii-z.ru/11403/194.mp3","error":0,"duration":902,"duration_min":"15:02"},{"id":"19","title":" 195","url":"https://ii-z.ru/11403/195.mp3","error":0,"duration":830,"duration_min":"13:50"},{"id":"20","title":" 196","url":"https://ii-z.ru/11403/196.mp3","error":0,"duration":820,"duration_min":"13:40"},{"id":"21","title":" 197","url":"https://ii-z.ru/11403/197.mp3","error":0,"duration":968,"duration_min":"16:08"},{"id":"22","title":" 198","url":"https://ii-z.ru/11403/198.mp3","error":0,"duration":790,"duration_min":"13:10"},{"id":"23","title":" 199","url":"https://ii-z.ru/11403/199.mp3","error":0,"duration":790,"duration_min":"13:10"}], 'https://audiokniga.one/uploads/posts/2023-11/1699047567_1-1.webp');
 });
 
/**/"""

# 提取JSON数组部分
json_match = re.search(r'\[(.*?)\]', code, re.DOTALL)
if json_match:
    json_str = f"[{json_match.group(1)}]"
    audio_items = json.loads(json_str)
    # 输出所有音频链接
    for item in audio_items:
        print(item['url'])

# 提取图片链接
img_match = re.search(r"'(https?://[^']+)'", code)
if img_match:
    print(img_match.group(1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 07:22:03