我必须从此网址中提取http://www.youtube.com/watch?v= aNdMiIAlK0g 视频ID。任何人都知道如何使用gsub和regex?
答案 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
)