从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 文档中删除除第一个以外的所有工作表,而不使用工作表名称

使用批处理删除除一个以外的所有文件夹

Rails 去除除数字逗号和小数点以外的所有内容

PHP:删除除字母和数字以外的所有内容€“Reg表达式

如何打印除一个以外的对象,而不删除任何内容(JavaScript)[重复]

UTF 8 String 删除除换行符以外的所有不可见字符