2010-11-25 11 views
1

我必须提取http://www.youtube.com/watch?v=aNdMiIAlK0g来自此网址的视频ID。任何人都知道如何使用gsub和正则表达式?如何使用gsub来提取YouTube视频的ID?

+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

有时可能会有像http:// youtu这样的短url .be/aNdMiIAlK0g你可能会在这里考虑 – 2014-09-10 10:26:26

回答

6

你可以用这个正则表达式的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

这是它:

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

+0

谢谢你,我试过这个并得到了结果:str.match(/ v =([\ w | - ] *)&* /)[1] – 2010-11-25 08:42:00

相关问题