从Ruby中的URL中删除除网站名称以外的所有内容[复制]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Ruby中的URL中删除除网站名称以外的所有内容[复制]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我正在迭代一个URL列表。网址有不同的格式,如:
https://twitter.com/sdfaskj...
https://www.linkedin.com/asdkfjasd...
http://google.com/asdfjasdj...
等等
我想使用Gsub或类似的东西来删除除网站名称之外的所有内容,分别只获得“twitter”,“linkedin”和“google”。
在我的脑海里,理想情况下我想要像.gsub一样可以检查多种可能性(url.gsub(“https://或https://www。或http:// etc.”,“”)并在找到时替换它们没有“”。还需要删除名称后面的所有内容,所以“.com / wkadslflj ......”
attributes.css("a").each do |attribute|
attribute_url = attribute["href"]
attribute_scrape = attribute_url.gsub("https://", "")
binding.pry
end
答案
我会考虑URI.parse
的组合来获取URL的主机名和PublicSuffix
gem来获得二级域名:
require 'public_suffix'
require 'uri'
url = 'https://www.linkedin.com/asdkfjasd'
host = URI.parse(url).host # => 'www.linkedin.com'
PublicSuffix.parse(host).sld # => 'linkedin'
另一答案
你可以使用这个gsub
正则表达式:
gsub(/http(s)?:\/\/(www.)?|.(com|net|co.uk|us)+.*/, '')
输出:
list = ["https://twitter.com/sdfaskj...", "https://www.linkedin.com/asdkfjasd...", "http://google.com/asdfjasdj..."]
list.map |u| u.gsub(/http(s)?:\/\/(www.)?|.(com|net|co.uk|us)+.*/, '')
=> ["twitter", "linkedin", "google"]
以上是关于从Ruby中的URL中删除除网站名称以外的所有内容[复制]的主要内容,如果未能解决你的问题,请参考以下文章
使用 OLE,从 OpenOffice/LibreOffice Calc 文档中删除除第一个以外的所有工作表,而不使用工作表名称