【发布时间】:2018-07-08 15:35:33
【问题描述】:
我正在使用以下函数从 YouTube 网址获取视频 ID。
static String getVideoIdFromUrl(String url) {
String regex = "http(?:s)?://(?:www\\.)?youtu(?:\\.be/|be\\.com/(?:watch\\?v=|v/\u200C\u200B|embed/|user/(?:[\\w#\u200C\u200B]+/)+))([^&#?\\n]+)";
String id = null;
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(url);
if (matcher.matches()) {
id = matcher.group(1);
}
return id;
}
这适用于获取几乎所有格式的视频 ID。但是,当提供带有时间戳的 URL 时,它会返回 null。
http://www.youtube.com/watch?v=0zM4nApSvMg#t=0m10s
https://www.youtube.com/watch?v=Br5xdYVbcWw&t=50
如何编写一个同时返回视频 ID 和时间戳的函数?
【问题讨论】:
-
也许
v=([^#&]+)?我不是Java的人,但我很确定有一个函数可以将 url 字符串分成各自的部分。 -
也不完全确定,但我认为您需要一个围绕 tlds 的小组:
(?:\.be/|be\.com/)
标签: java regex youtube youtube-api