【发布时间】:2019-10-29 20:16:32
【问题描述】:
M3U 文件是一个播放列表文件,它包含描述媒体文件的条目列表、它们的名称、ID、类别等。 第一行是元数据,第二行是文件或流 URL。
示例:
#EXTINF:-1 tvg-id="ChannelName" tvg-name="|FR| Channel" tvg-logo="http://logo" timeshift="1" group-title="|FR| FrenchChannel",|FR| Channel Fullname
URL
我的文件包含大约 90,000 个条目和 160,000 行。重量约为 20Mb。
我想解析这个文件,并获取每个条目。我尝试使用这个正则表达式:
'(.+?),(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)(.+)\s*(.+)\s*'
它为我提供了不同匹配组中的元数据、全名和 URL。它适用于不同的子集,包括 30,000 和 50,000 行。但是,在制作全套时,匹配时间太长了。当时我无法让它完成,不得不终止它。
我无法进行此解析,这是设计模式问题还是正则表达式太慢?我很困惑。
【问题讨论】:
-
重复键值对
^(#\S+(?: [^\s="]+="[^"]+")+),(.*)\s(.*)查看regex101.com/r/OdaIcA/1