从频道网址中提取YouTube频道ID-Android

时间:2018-07-04 06:01:53

标签: android regex youtube youtube-channels

示例网址:https://www.youtube.com/channel/UCAoMPWcQKA_9Af5YhWdrZgw

我只需要UCAoMPWcQKA_9Af5YhWdrZgw(频道ID)

4 个答案:

答案 0 :(得分:1)

将字符串解析为URI:

    Uri uri = Uri.parse("https://www.youtube.com/channel/UCAoMPWcQKA_9Af5YhWdrZgw")
    String id = uri.lastPathSegment() //UCAoMPWcQKA_9Af5YhWdrZgw

答案 1 :(得分:1)

这是您可以用来捕获频道ID的模式,这还将验证网址

 ^(?:(http|https):\/\/[a-zA-Z-]*\.{0,1}[a-zA-Z-]{3,}\.[a-z]{2,})\/channel\/([a-zA-Z0-9_]{3,})$

我不知道如何在android中执行正则表达式,但是共享正则表达式网址,您可以从此处https://regex101.com/r/9sjMPp/1进行检查

或要执行的javascript代码

var str = "https://www.youtube.com/channel/UCAoMPWcQKA_9Af5YhWdrZgw";
var pattern = /^(?:(http|https):\/\/[a-zA-Z-]*\.{0,1}[a-zA-Z-]{3,}\.[a-z]{2,})\/channel\/([a-zA-Z0-9_]{3,})$/;
var matchs = str.match(pattern);
console.log(matchs[2]);
// output is UCAoMPWcQKA_9Af5YhWdrZgw

希望您能明白。

答案 2 :(得分:0)

您可以使用此正则表达式从不同类型的youtube url中检索视频ID。

String pattern = "(?<=watch\\?v=|/videos/|embed\\/|youtu.be\\/|\\/v\\/|\\/e\\/|watch\\?v%3D|watch\\?feature=player_embedded&v=|%2Fvideos%2F|embed%\u200C\u200B2F|youtu.be%2F|%2Fv%2F)[^#\\&\\?\\n]*";  

然后使用上述正则表达式生成一个Pattern实例,您可以使用Pattern.matcher(videoLink)从中获得Matcher实例。
现在Matcher.find()将为您提供一个布尔值,以了解上述正则表达式是否出现在给定的视频链接中。
视情况而定,您可以使用Matcher.group(),这将带给您视频ID。

Refer Here

答案 3 :(得分:0)

Subhendu Mondal的决定在这样的链接上崩溃。

// args after id

https://www.youtube.com/channel/UCAoMPWcQKA_9Af5YhWdrZgw?view_as=subscriber 

//minus sign in id

https://www.youtube.com/channel/UCQ18THOcZ8nIP-A3ZCqqZwA

因此,这是一个改进的决策,协议组也已从匹配结果中删除

^(?:http|https):\/\/[a-zA-Z-]*\.{0,1}[a-zA-Z-]{3,}\.[a-z]{2,}\/channel\/([a-zA-Z0-9_\-]{3,24})
var str = "https://www.youtube.com/channel/UCAoMPWcQKA_9Af5YhWdrZgw";
var pattern = /^(?:(http|https):\/\/[a-zA-Z-]*\.{0,1}[a-zA-Z-]{3,}\.[a-z]{2,})\/channel\/([a-zA-Z0-9_]{3,})$/;
var match = str.match(pattern);
console.log(match[1]);

更新:

这是最短的方法:

youtube.com\/channel\/([^#\&\?]*).*