【发布时间】:2018-04-17 06:43:24
【问题描述】:
我正在尝试解析 HLS m3u8 文件并且卡在匹配 m3u8 链接的位置。因此,如果URI= 存在,则从#EXT-X-I-FRAME-STREAM-INF 中获取引号中的那个,如果不存在#EXT-X-STREAM-INF,则从新行获取链接。
文字:
#EXT-X-STREAM-INF:BANDWIDTH=263851,CODECS="mp4a.40.2, avc1.4d400d",RESOLUTION=416x234,AUDIO="bipbop_audio",SUBTITLES="subs"
gear1/prog_index.m3u8 <== new line link
#EXT-X-I-FRAME-STREAM-INF:URI="gear1/iframe_index.m3u8",CODECS="avc1.4d400d",BANDWIDTH=28451
正则表达式:
(?:#EXT-X-STREAM-INF:|#EXT-X-I-FRAME-STREAM-INF:)(?:BANDWIDTH=(?<BANDWIDTH>\d+),?|CODECS=(?<CODECS>"[^"]*"),?|RESOLUTION=(?<RESOLUTION>\d+x\d+),?|AUDIO=(?<AUDIO>"[^"]*"),?|SUBTITLES=(?<SUBTITLES>"[^"]*"),?|URI=(?<URI>"[^"]*"),?)*
【问题讨论】:
-
请看this demo,你想要这样的东西吗?如果
#EXT-X-STREAM-INF在第 1 组中匹配,则匹配另一行并将其捕获到第二个URI组(使用(?J)修饰符)。 -
@Wiktor Stribiżew 你简直太神了!请发帖,这样我就可以投票并接受它作为答案。
-
您确定您的引擎是 PCRE 吗?它会在实际的当前项目代码中工作吗?
-
@Wiktor Stribiżew 我不知道。我正在使用 PHP。
-
是的,PHP 使用 PCRE。
标签: regex http-live-streaming m3u8