正則表達式中的排除式寫法


正則表達式中的排除式寫法

m3u8地址各種各樣,我們要遍歷出內容里面的小文件的下載地址,以前用正則表達式的url規則即可,但是我們會發現,有下面的至少2中類型的地址,怎么取出地址呢?

1 :有這樣的:直接包含http的地址
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:2
#EXTINF:5
http://202.102.74.50/6974400842D4881E1904F52F46/0300080700579F4E14D1C42D9B7D2F61E0BD40-0333-38B0-87D6-AF8240D23940.mp4.ts?ts_start=0&ts_end=5&ts_seg_no=0&ts_keyframe=0
#EXTINF:10
http://202.102.74.50/6974400842D4881E1904F52F46/0300080700579F4E14D1C42D9B7D2F61E0BD40-0333-38B0-87D6-AF8240D23940.mp4.ts?ts_start=5&ts_end=15&ts_seg_no=1&ts_keyframe=0
#EXTINF:10
http://202.102.74.50/6974400842D4881E1904F52F46/0300080700579F4E14D1C42D9B7D2F61E0BD40-0333-38B0-87D6-AF8240D23940.mp4.ts?ts_start=15&ts_end=25&ts_seg_no=2&ts_keyframe=0
#EXTINF:10
http://202.102.74.50/6974400842D4881E1904F52F46/0300080700579F4E14D1C42D9B7D2F61E0BD40-0333-38B0-87D6-AF8240D23940.mp4.ts?ts_start=25&ts_end=35&ts_seg_no=3&ts_keyframe=0
#EXTINF:10
http://202.102.74.50/6974400842D4881E1904F52F46/0300080700579F4E14D1C42D9B7D2F61E0BD40-0333-38B0-87D6-AF8240D23940.mp4.ts?ts_start=35&ts_end=45&ts_seg_no=4&ts_keyframe=0
#EXTINF:10
http://202.102.74.50/6974400842D4881E1904F52F46/0300080700579F4E14D1C42D9B7D2F61E0BD40-0333-38B0-87D6-AF8240D23940.mp4.ts?ts_start=45&ts_end=55&ts_seg_no=5&ts_keyframe=0
2 :還有這樣的:內容不包含http地址的,需要拼接的
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-DISCONTINUITY
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:17
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.427,
n0011l7h8f0_p202_mp4_av.1.0.ts?ugc=0&ga=0&gv=0&start=0&end=10427
#EXTINF:8.217,
n0011l7h8f0_p202_mp4_av.1.1.ts?ugc=0&ga=0&gv=0&start=10427&end=18644
#EXTINF:10.093,
n0011l7h8f0_p202_mp4_av.1.2.ts?ugc=0&ga=0&gv=0&start=18644&end=28737
#EXTINF:10.344,
n0011l7h8f0_p202_mp4_av.1.3.ts?ugc=0&ga=0&gv=0&start=28737&end=39081
#EXTINF:9.634,
n0011l7h8f0_p202_mp4_av.1.4.ts?ugc=0&ga=0&gv=0&start=39081&end=48715
#EXTINF:12.179,
n0011l7h8f0_p202_mp4_av.1.5.ts?ugc=0&ga=0&gv=0&start=48715&end=60894

所以就不能用匹配url地址的方式進行匹配,否則,第二種無法匹配

[a-zA-z]+://[^\s]*
3 :解決方案:

經過一些查詢,最后的結論:

[\n](/)?[a-zA-z1-9]+[^\s]*

解釋:

[\n]:表示匹配一行的開頭
(/)?:表示匹配到但斜杠"/"
[a-zA-z1-9]:表示匹配大小寫字母或者數字1-9
+:表示前面的為任意數量
[^\s]*:表示任意數量的任意字符串

這樣以上的兩種方式的m3u8

在線正則表達式測試:http://tool.oschina.net/regex/

參考

正則表達式30分鍾入門教程

正則表達式中的不匹配

不包含字符串abc的正則表達式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM