【问题标题】:How to use gsub to extract the id of a youtube video?如何使用 gsub 提取 youtube 视频的 id?
【发布时间】:2010-11-25 19:36:02
【问题描述】:

我必须从这个 url 中提取 http://www.youtube.com/watch?v=aNdMiIAlK0g 视频 ID。有人知道如何使用 gsub 和正则表达式吗?

【问题讨论】:

标签: ruby regex string gsub


【解决方案1】:

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

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

它从 ?&amp; 的后向查找开始,并匹配所有内容,直到下一个 &amp; 或字符串末尾。即使有其他参数,即使以“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 库来获取查询部分并使用 &amp; 拆分它们并使用 v 的值,因为如果 url 类似于 http://www.youtube.com/promo?for_tv=1 和它将作为v=1)

    【讨论】:

    • 谢谢,我试过了,也得到了结果:str.match(/v=([\w|-]*)&*/)[1]
    猜你喜欢
    • 2011-09-27
    • 2011-12-15
    • 2019-10-24
    • 2023-03-17
    • 2018-03-12
    • 2012-09-23
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    相关资源
    最近更新 更多