2017-01-22 110 views
0

我想使用正則表達式來獲取此String的所有.mp4 URL。用於在字符串中查找mp4的正則表達式

另外我想知道如何使用正則表達式只獲得最後一個.mp4的URL。

感謝

contentType=application/x-mpegURL, url=https://video.twimg.com/amplify_video/822938952332144642/pl/BjHU8aBCbOgZNzXQ.m3u8}, 

Variant{bitrate=0, contentType=application/dash+xml, url=https://video.twimg.com/amplify_video/822938952332144642/pl/BjHU8aBCbOgZNzXQ.mpd}, 

Variant{bitrate=320000, contentType=video/mp4, url=https://video.twimg.com/amplify_video/822938952332144642/vid/320x180/YqZ72rzLj3VWVhy4.mp4}, 

Variant{bitrate=832000, contentType=video/mp4, url=https://video.twimg.com/amplify_video/822938952332144642/vid/640x360/A2vMgzo2ElpPP6TE.mp4}, 

Variant{bitrate=2176000, contentType=video/mp4, url=https://video.twimg.com/amplify_video/822938952332144642/vid/1280x720/j9xbNzRZqEbYs_2s.mp4}]}]"; 

回答

0

方法2:

  1. 如果你確定該URL的將始終https://開始,將不包含mp4完整的URL完成後,再你可以使用 pattern = "https://.*mp4";

    String[] arr = { 
        "contentType=application/x-mpegURL, url=https://video.twimg.com/amplify_video/822938952332144642/pl/BjHU8aBCbOgZNzXQ.m3u8}", 
    
        "Variant{bitrate=0, contentType=application/dash+xml, url=https://video.twimg.com/amplify_video/822938952332144642/pl/BjHU8aBCbOgZNzXQ.mpd}", 
    
        "Variant{bitrate=320000, contentType=video/mp4, url=https://video.twimg.com/amplify_video/822938952332144642/vid/320x180/YqZ72rzLj3VWVhy4.mp4}", 
    
        "Variant{bitrate=832000, contentType=video/mp4, url=https://video.twimg.com/amplify_video/822938952332144642/vid/640x360/A2vMgzo2ElpPP6TE.mp4}", 
    
        "Variant{bitrate=2176000, contentType=video/mp4, url=https://video.twimg.com/amplify_video/822938952332144642/vid/1280x720/j9xbNzRZqEbYs_2s.mp4}]}]" 
    }; 
    String pattern = "https://.*mp4"; 
    Pattern r = Pattern.compile(pattern); 
    
    for (String line : arr) { 
        Matcher m = r.matcher(line); 
        if (m.find()) { 
         System.out.println(m.group(0)); 
        } else { 
         System.out.println("NO MATCH"); 
        } 
    } 
    
  2. 如果沒有,支持所有類型的URL的的,然後改變你的模式是什麼定義here一點點修改,

    String pattern = 
        "(((ht|f)tp(s?)\\:\\/\\/|~\\/|\\/)|www.)" + 
        "(\\w+:\\[email protected])?(([-\\w]+\\.)+(com|org|net|gov" + 
        "|mil|biz|info|mobi|name|aero|jobs|museum" + 
        "|travel|[a-z]{2}))(:[\\d]{1,5})?" + 
        "(((\\/([-\\w~!$+|.,=]|%[a-f\\d]{2})+)+|\\/)+|\\?|#)?" + 
        "((\\?([-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" + 
        "([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)" + 
        "(&(?:[-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" + 
        "([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)*)*" + 
        "(#([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)?\\b"+"mp4"; 
    

輸出:

NO MATCH 
NO MATCH 
https://video.twimg.com/amplify_video/822938952332144642/vid/320x180/YqZ72rzLj3VWVhy4.mp4 
https://video.twimg.com/amplify_video/822938952332144642/vid/640x360/A2vMgzo2ElpPP6TE.mp4 
https://video.twimg.com/amplify_video/822938952332144642/vid/1280x720/j9xbNzRZqEbYs_2s.mp4 
+0

第一approache將無法工作,因爲我的網址是一個單行字符串沒有新線或數組。但第二個方法完美的工作表示感謝 – user7453632

0

正則表達式:

https?.*?\.mp4 

文字http

跟着一個可選的':s?

刪除問號,如果他們將全部使用HTTPS。

其次是儘可能少的字符可能:後跟MP4擴展(字面點).*?

\.mp4

相關問題