从网址中删除特定部分

时间:2015-03-11 21:50:03

标签: ruby

假设我有这样的网址:

https://www.youtube.com/watch/3e4345?v=rwmEkvPBG1s

仅获得3e4345部分的最佳和最短途径是什么? 有时它在?中不包含其他参数 我不想使用任何宝石。

我做的是:

    url =  url.split('/watch/')
    url =  url[1].split('/')[0].split('?')[0]

有更好的方法吗?感谢

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作并使用match函数根据正则表达式语句查找匹配项。 [1]处的值是正则表达式中的第一个捕获。我在regexper.com中包含了一个细分,以帮助说明表达式的完成情况。

您会注意到\ d +周围的括号,这些括号在匹配时会从URL中捕获数字。

url.to_s.match(/\/watch\/(\d+).*$/)[1]

Regexper

答案 1 :(得分:1)

可能是最安全和最好的一个。使用URI。

URI("https://www.youtube.com/watch/34345?v=rwmEkvPBG1s").path.split("/").last

有关详情,请参阅How to extract URL parameters from a URL with Ruby or Rails?

答案 2 :(得分:1)

x = "https://www.youtube.com/watch/34345?v=rwmEkvPBG1s"
File.basename(URI(x).path)
=> "34345"