栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

[Java]使用正则表达式处理M3U8文件

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Java]使用正则表达式处理M3U8文件

0.前言

最近对M3U8解析特别感兴趣,通过python脚本简单实现了解析m3u8和多线程下载之后,想用Java、Kotlin还有C/C++尝试实现。

本文主要实现使用Java的正则表达式实现简单的M3U8解析,拼合下载链接返回List。

1.读取M3U8到String
 这是测试用的M3U8文件
#EXTM3U
 #EXT-X-VERSION:3
 #EXT-X-TARGETDURATION:17
 #EXT-X-MEDIA-SEQUENCE:0
 #EXTINF:15.100000,
 5281440.ts
 #EXTINF:5.533333,
 5281441.ts
 #EXTINF:16.666667,
 5281442.ts
 #EXTINF:8.333333,
 5281443.ts
 #EXTINF:8.333333,
 5281444.ts
 #EXTINF:8.333333,
 5281445.ts
 #EXTINF:8.333333,
 5281446.ts
 #EXTINF:16.666667,
 5281447.ts
 #EXTINF:8.333333,
 5281448.ts
 #EXTINF:8.333333,
 5281449.ts
 #EXTINF:8.333333,
 52814410.ts
 #EXTINF:8.333333,
 52814411.ts
 #EXTINF:16.666667,
 52814412.ts
 #EXTINF:8.333333,
 52814413.ts
 #EXTINF:8.333333,
 52814414.ts
 #EXTINF:8.333333,
 52814415.ts
 #EXTINF:8.333333,
 52814416.ts
 #EXTINF:16.666667,
 52814417.ts
 #EXTINF:8.333333,
 52814418.ts
 #EXTINF:8.333333,
 52814419.ts
 #EXTINF:8.333333,
 52814420.ts
 #EXTINF:8.333333,
 52814421.ts
 #EXTINF:16.666667,
 52814422.ts
 #EXTINF:8.333333,
 52814423.ts
 #EXTINF:8.333333,
 52814424.ts
 #EXTINF:8.333333,
 52814425.ts
 #EXTINF:8.333333,
 52814426.ts
 #EXTINF:16.666667,
 52814427.ts
 #EXTINF:8.333333,
 52814428.ts
 #EXTINF:8.333333,
 52814429.ts
 #EXTINF:8.333333,
 52814430.ts
 #EXTINF:8.333333,
 52814431.ts
 #EXTINF:16.666667,
 52814432.ts
 #EXTINF:8.333333,
 52814433.ts
 #EXTINF:8.333333,
 52814434.ts
 #EXTINF:8.333333,
 52814435.ts
 #EXTINF:8.333333,
 52814436.ts
 #EXTINF:16.666667,
 52814437.ts
 #EXTINF:8.333333,
 52814438.ts
 #EXTINF:8.333333,
 52814439.ts
 #EXTINF:8.333333,
 52814440.ts
 #EXTINF:8.333333,
 52814441.ts
 #EXTINF:16.666667,
 52814442.ts
 #EXTINF:8.333333,
 52814443.ts
 #EXTINF:4.900000,
 52814444.ts
 #EXTINF:16.666667,
 52814445.ts
 #EXTINF:8.333333,
 52814446.ts
 #EXTINF:8.300000,
 52814447.ts
 #EXTINF:4.566667,
 52814448.ts
 #EXT-X-ENDLIST
2.使用正则表达式读取     
public List ReadList4M3U8String(String m3u8File)
     {
         List result = new ArrayList();
         //开始筛选
         Pattern pattern =Pattern.compile("n(.+?.ts)n");//匹配的模式
         //通配符中也要加入转移字符 (.+?)代表要查找的内容
         Matcher matcher=pattern.matcher(m3u8File);
         //list储存下载链接
         while(matcher.find())
         {
             String find_str = matcher.group(1);
             result.add(find_str);
         }
         return result;
     }

直接给出函数

"n(.+?.ts)n" 中n是换行符 括号代表我要取出来的内容,.+?可以表示任意字符

具体的正则表达式内容可以看看这个

Java 正则表达式-Runoob

在处理过程中,考虑到具体使用我添加了拼合字符串实现直接获得下载链接List

  //使用正则表达式读文件中的文件名,通过baseUrl拼接成可以直接下载的文件Url
     public List ReadList4M3U8String(String m3u8File,String baseUrl)
     {
         List result = new ArrayList();
 ​
         //检查baseUrl格式,是否以/结尾,防止拼接链接错误
         if (baseUrl.charAt(baseUrl.length()-1) != '/')
         {
             baseUrl+="/";
         }
         //开始筛选
         Pattern pattern =Pattern.compile("n(.+?.ts)n");//匹配的模式
         //通配符中也要加入转移字符 (.+?)代表要查找的内容
         Matcher matcher=pattern.matcher(m3u8File);
         //list储存下载链接
         while(matcher.find())
         {
             String find_str = matcher.group(1);
             result.add(baseUrl+find_str);
         }
         return result;
     }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269267.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号