2010-11-25 65 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