【发布时间】:2019-09-17 04:59:11
【问题描述】:
我正在尝试解析一个 m3u 文件,但遇到了问题。
M3U 文件如下所示:
#EXTM3U
#EXTINF:-1 tvg-id="6 eren" tvg-name="6'eren" tvg-logo="http://195.154.221.171/picons/6erendk.png" group-title="Denmark",6'eren
http://URL/something
#EXTINF:-1 tvg-id="6 eren" tvg-name="6'eren FHD" tvg-logo="http://195.154.221.171/picons/6erenhddk.png" group-title="Denmark",6'eren FHD
http://URL/something
#EXTINF:-1 tvg-id="6 eren" tvg-name="6'eren FHD" tvg-logo="http://195.154.221.171/picons/6erenhddk.png" group-title="Denmark",6'eren FHD
http://portal.siptveu.com:8080/8IsZPSZ7sc/IMd7O87LUj/9266
#EXTINF:-1 tvg-name="6'eren HD" group-title="Denmark",6'eren HD
http://URL/something
#EXTINF:-1 tvg-id="Animal Planet" tvg-name="Animal Planet FHD" tvg-logo="http://195.154.221.171/picons/animalplanethddk.png" group-title="Denmark",Animal Planet FHD
http://URL/something
#EXTINF:-1 tvg-id="Animal Planet" tvg-name="Animal Planet HD" tvg-logo="http://195.154.221.171/picons/animalplanethddk.png" group-title="Denmark",Animal Planet HD
http://URL/something
#EXTINF:-1 tvg-name="Boomerang" tvg-logo="http://195.154.221.171/picons/boomerangse.png" group-title="Denmark",Boomerang
http://URL/something
#EXTINF:-1 tvg-name="C More First FHD" group-title="Denmark",C More First FHD
http://URL/something
#EXTINF:-1 tvg-name="C More Hits FHD" group-title="Denmark",C More Hits FHD
http://URL/something
etc...
我需要获取 tvg-name 的值和同一条目的 URL。
到目前为止,我已经创建了代码来获取电视名称,如下所示:
List<Channel> ChannelList = new List<Channel>();
List<int> posOfTvgName = GetPositions(m3u, "tvg-name");
var reg = new Regex("tvg-name=\".*?\"");
var matches = reg.Matches(m3u);
foreach (var item in matches)
{
Channel c = new Channel();
string channelName = item.ToString();
channelName = item.ToString().Remove(0, 10);
channelName = channelName.Remove(channelName.Length - 1);
c.Name = channelName;
ChannelList.Add(c);
}
但我遇到了一些障碍,因为我不知道如何获取下一行的内容。
有什么建议吗?
【问题讨论】:
-
试试这个
\btvg-name="([^"]+)".*\r?\n(https?\S+)regex101.com/r/d3Onzy/1 -
... 如果您想捕获第三组(例如,如果 group-title 存在),您可以使用:\btvg-name="([^"]+ )".*\r?\bgroup-title="([^"]+)".*\r?\n(https?\S+)