1

我必须从该网址中提取http://www.youtube.com/watch?v=aNdMiIAlK0g视频ID。任何人都知道如何使用 gsub 和正则表达式来做到这一点?

4

2 回答 2

6

您可以将v参数与此正则表达式匹配:

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

?它从or的lookbehind 开始&并匹配所有内容,直到&字符串的下一个或结尾。即使有其他参数,即使以“v”结尾的参数,它也可以工作。

但是,更安全的方法可能是使用 URI 类:

require 'uri'

query_string = URI.parse(url).query
parameters = Hash[URI.decode_www_form(query_string)]
parameters['v'] # => aNdMiIAlK0g
于 2010-11-25T08:19:52.857 回答
2

就是这个:

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

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

于 2010-11-25T06:44:45.697 回答