Пример URL: https://www.youtube.com/channel/UCAoMPWcQKA_9Af5YhWdrZgw.
Мне нужен только UCAOMPWcQKA_9Af5YhWdrZgw (идентификатор канала)
Пример URL: https://www.youtube.com/channel/UCAoMPWcQKA_9Af5YhWdrZgw.
Мне нужен только UCAOMPWcQKA_9Af5YhWdrZgw (идентификатор канала)
Это шаблон, который вы можете использовать для захвата идентификатора канала, и это также проверит URL-адрес.
^(?:(http|https):\/\/[a-zA-Z-]*\.{0,1}[a-zA-Z-]{3,}\.[a-z]{2,})\/channel\/([a-zA-Z0-9_]{3,})$
Я понятия не имею, как выполнять регулярное выражение в Android, но поделился URL-адресом регулярного выражения, вы можете проверить здесь 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
Надеюсь, вы уловили идею.
Решение 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\/([^#\&\?]*).*
Разобрать строку в URI:
Uri uri = Uri.parse("https://www.youtube.com/channel/UCAoMPWcQKA_9Af5YhWdrZgw")
String id = uri.lastPathSegment() //UCAoMPWcQKA_9Af5YhWdrZgw
Вы можете использовать это регулярное выражение для получения идентификаторов видео из разных типов URL-адресов YouTube.
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, используя приведенное выше регулярное выражение, из которого вы можете получить экземпляр Matcher, используя Pattern.matcher(videoLink)
.
Теперь Matcher.find()
даст вам логическое значение того, встречается ли указанное выше регулярное выражение в данной ссылке на видео или нет.
В зависимости от этого вы можете использовать Matcher.group()
, который вернет вам идентификатор видео.
https://www.youtube.com/channel/
(очевидно). Что такое проблема? - person Vladyslav Matviienko   schedule 04.07.2018https://www.youtube.com/channel/
); 2) удалитьhttps://www.youtube.com/channel/
- person Vladyslav Matviienko   schedule 04.07.2018