如何使用gsub提取YouTube视频的ID?

时间:2010-11-25 06:40:23

标签: ruby regex string gsub

我必须从此网址中提取http://www.youtube.com/watch?v= aNdMiIAlK0g 视频ID。任何人都知道如何使用gsub和regex?

2 个答案:

答案 0 :(得分:6)

您可以将v参数与此regexp匹配:

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

答案 1 :(得分:2)

就是这样:

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

(尽管您可能希望使用URI库获取查询部分并使用&拆分它们并使用v的值,因为如果网址类似于上面的内容将会混淆http://www.youtube.com/promo?for_tv=1并将其视为v=1