我必须从该网址中提取http://www.youtube.com/watch?v=aNdMiIAlK0g视频ID。任何人都知道如何使用 gsub 和正则表达式来做到这一点?
问问题
1956 次
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 回答