Senza conoscere la specifica completa per tutte le possibili URL di YouTube, questo sembra funzionare per gli esempi che hai fornito:
//*EDIT* - fixed to hopefully support more recent youtube link styles/formats:
(?<=watch\?v=|/videos/|/embed/|youtu.be/)[^&#?]*
... corrisponde a PjDw3azfZWI
da uno di questi URL:
http://www.youtube.com/watch?v=PjDw3azfZWI#t=31m08s
http://gdata.youtube.com/feeds/api/videos/PjDw3azfZWI
Si avrebbe bisogno di un po 'di più per ottenere quel particolare informazioni se non si sa che queste erano da youtube, anche se questo è un bel rapido controllo
Tenete presente che se si sta cercando di utilizzare solo il risultato del metodo getQuery()
, non sarà possibile estrarre il risultato dall'URL http://gdata.youtube.com/feeds/api/videos/PjDw3azfZWI
, poiché questo URL non ha una parte di query ad esso ...
Java Esempio:
Pattern rex = Pattern.compile("(?<=watch\\?v=|/videos/)[^&#]*");
Matcher m = rex.matcher(link);
String YouTubeVideoID = m.group();
fonte
2011-10-11 19:11:58
Si consiglia di esaminare [la risposta a una domanda molto simile] (http://stackoverflow.com/questions/5830387/php-regex-find-all-youtube-video-ids-in-string/5831191 # 5.831.191). Estrae il video-id da una varietà di formati di URL di YouTube. – ridgerunner
@ridgerunner ringrazia ma manca i link gdata – Peril
Grazie per averlo indicato. Ho aggiornato [la mia espressione di corrispondenza ID YouTube] (http://stackoverflow.com/questions/5830387/php-regex-find-all-youtube-video-ids-in-string/5831191#5831191) in modo che sia ora corrisponde correttamente all'esempio del sottodominio 'gdata'. – ridgerunner