Как использовать gsub для извлечения id видео на YouTube? - PullRequest
1 голос
/ 25 ноября 2010

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

Ответы [ 2 ]

6 голосов
/ 25 ноября 2010

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

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

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

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

require 'uri'

query_string = URI.parse(url).query
parameters = Hash[URI.decode_www_form(query_string)]
parameters['v'] # => aNdMiIAlK0g
2 голосов
/ 25 ноября 2010

вот оно:

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)

...