Извлечь идентификатор канала YouTube из URL-адреса канала - Android

Пример URL: https://www.youtube.com/channel/UCAoMPWcQKA_9Af5YhWdrZgw.

Мне нужен только UCAOMPWcQKA_9Af5YhWdrZgw (идентификатор канала)


person Android Guy    schedule 04.07.2018    source источник
comment
удалить https://www.youtube.com/channel/ (очевидно). Что такое проблема?   -  person Vladyslav Matviienko    schedule 04.07.2018
comment
URL-адрес введен пользователем, поэтому необходимо также проверить URL-адрес.   -  person Android Guy    schedule 04.07.2018
comment
далее 2 отдельные задачи: 1) проверить URL (есть ли в нем https://www.youtube.com/channel/); 2) удалить https://www.youtube.com/channel/   -  person Vladyslav Matviienko    schedule 04.07.2018


Ответы (4)


Это шаблон, который вы можете использовать для захвата идентификатора канала, и это также проверит 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

Надеюсь, вы уловили идею.

person Subhendu Mondal    schedule 04.07.2018

Решение 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\/([^#\&\?]*).*
person user2993505    schedule 31.01.2019

Разобрать строку в URI:

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

Вы можете использовать это регулярное выражение для получения идентификаторов видео из разных типов 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(), который вернет вам идентификатор видео.

Ссылка здесь

person sissyphus_69    schedule 04.07.2018