2010-11-25 3 views
1

Мне нужно извлечь http://www.youtube.com/watch?v=aNdMiIAlK0g ID видео с этого URL. Кто-нибудь знает, как это сделать с помощью gsub и regex?Как использовать gsub для извлечения идентификатора видео с YouTube?

+1

Кто-то пытается сделать то же самое в [этот вопрос] (http://stackoverflow.com/questions/3903854/how-can-i-alter-this-regex-to-get-the-youtube-video-id-from-a-youtube-url-that-do) – 2010-11-25 11:41:33

+0

Иногда может быть короткий URL-адрес, например http: // youtu .be/aNdMiIAlK0g, который вы можете здесь рассмотреть – 2014-09-10 10:26:26

ответ

6

Вы можете настроить параметр v с этим регулярным выражением:

url[/(?<=[?&]v=)[^&$]+/] # => aNdMiIAlK0g 

Он начинается с lookbehind для ? или & и соответствует всем до & или концу строки. Он работает, даже если есть другие параметры, даже те, которые заканчиваются на «v».

Однако более безопасный способ сделать это было бы использовать класс URI:

require 'uri' 

query_string = URI.parse(url).query 
parameters = Hash[URI.decode_www_form(query_string)] 
parameters['v'] # => aNdMiIAlK0g 
2

это он:

ruby-1.9.2-p0 > "http://www.youtube.com/watch?v=aNdMiIAlK0g"[/v=([^&]+)/, 1] 
=> "aNdMiIAlK0g" 

(хотя вы можете использовать библиотеку URI, чтобы получить часть запроса и разделить их с помощью & и использовать значение для v, потому что выше запутается, если URL-то вроде http://www.youtube.com/promo?for_tv=1, и он будет считать как v=1)

+0

спасибо, я попробовал это и получил результат тоже: str.match (/ v = ([\ w | -] *) & * /) [1] – 2010-11-25 08:42:00

Смежные вопросы