假设我有这样的网址:
https://www.youtube.com/watch/3e4345?v=rwmEkvPBG1s
仅获得3e4345
部分的最佳和最短途径是什么?
有时它在?
中不包含其他参数
我不想使用任何宝石。
我做的是:
url = url.split('/watch/')
url = url[1].split('/')[0].split('?')[0]
有更好的方法吗?感谢
答案 0 :(得分:1)
您可以执行以下操作并使用match函数根据正则表达式语句查找匹配项。 [1]处的值是正则表达式中的第一个捕获。我在regexper.com中包含了一个细分,以帮助说明表达式的完成情况。
您会注意到\ d +周围的括号,这些括号在匹配时会从URL中捕获数字。
url.to_s.match(/\/watch\/(\d+).*$/)[1]
答案 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"