zoukankan      html  css  js  c++  java
  • 正则表达式中的排除式写法

    正则表达式中的排除式写法

    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 :解决方案:

    经过一些查询,最后的结论:

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

    解释:

    [
    ]:表示匹配一行的开头
    (/)?:表示匹配到但斜杠"/"
    [a-zA-z1-9]:表示匹配大小写字母或者数字1-9
    +:表示前面的为任意数量
    [^s]*:表示任意数量的任意字符串
    

    这样以上的两种方式的m3u8

    在线正则表达式测试:http://tool.oschina.net/regex/

    参考

    正则表达式30分钟入门教程

    正则表达式中的不匹配

    不包含字符串abc的正则表达式

  • 相关阅读:
    Android 对话框(Dialog)
    struts2 开发模式
    Struts2动态方法调用(DMI)
    Struts2中 Path (getContextPath与basePath)
    String path = request.getContextPath
    ios虚拟机安装(二)
    Spring MVC 的 研发之路
    Swift辛格尔顿设计模式(SINGLETON)
    【算法导论】多项式求和
    uva 11181
  • 原文地址:https://www.cnblogs.com/fengtengfei/p/5736707.html
Copyright © 2011-2022 走看看