Не зная полной спецификации для всех возможных URL-адресов YouTube, похоже, это работает для приведенных вами примеров:
//*EDIT* - fixed to hopefully support more recent youtube link styles/formats:
(?<=watch\?v=|/videos/|/embed/|youtu.be/)[^&#?]*
... соответствует PjDw3azfZWI
из любого из этих URL-адресов:
http://www.youtube.com/watch?v=PjDw3azfZWI#t=31m08s
http://gdata.youtube.com/feeds/api/videos/PjDw3azfZWI
Вам понадобится немного больше, чтобы получить эту конкретную информацию, если вы не знали, что она была с YouTube, хотя это довольно быстрая проверка
Имейте в виду, что если вы пытаетесь использоватьтолько результат метода getQuery()
, будет невозможно извлечь результат из URL http://gdata.youtube.com/feeds/api/videos/PjDw3azfZWI
, так как этот URL не имеет части запроса ...
Пример Java:
Pattern rex = Pattern.compile("(?<=watch\\?v=|/videos/)[^&#]*");
Matcher m = rex.matcher(link);
String YouTubeVideoID = m.group();