Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中从URL中删除除网站名称以外的所有内容_Ruby_Url_Gsub - Fatal编程技术网

在Ruby中从URL中删除除网站名称以外的所有内容

在Ruby中从URL中删除除网站名称以外的所有内容,ruby,url,gsub,Ruby,Url,Gsub,我是一个在URL列表中迭代的人。URL有不同的格式,如: https://twitter.com/sdfaskj... https://www.linkedin.com/asdkfjasd... http://google.com/asdfjasdj... 等等 我想使用Gsub或类似的工具来删除除了网站名称以外的所有内容,分别获得“twitter”、“linkedin”和“google” 在我的脑海中,理想情况下,我想要一个像.gsub这样的东西,它可以检查多种可能性(url.gsub(“

我是一个在URL列表中迭代的人。URL有不同的格式,如:

https://twitter.com/sdfaskj... 
https://www.linkedin.com/asdkfjasd...
http://google.com/asdfjasdj...
等等

我想使用Gsub或类似的工具来删除除了网站名称以外的所有内容,分别获得“twitter”、“linkedin”和“google”

在我的脑海中,理想情况下,我想要一个像.gsub这样的东西,它可以检查多种可能性(url.gsub(“https://or.or http://etc.”,“”),并在没有找到任何内容时替换它们。它还需要删除名称后面的所有内容,所以“.com/wkadslflj…”


您可以使用此
gsub
regexp:

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"] 

我会考虑使用<代码> URI .PARSE < /C> >从URL和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'

成功了!我将不得不研究正则表达式行…使用
URI
模块和
host
URI.parse(“https://www.twitter.com/sdfaskj...").host
返回
www.twitter.com
not
twitter
@AlexKojin,这看起来不是更容易解析吗?还有其他子域和TLD呢?@engineersmnky这是本规范的解决方案,并非适用于所有情况。它可以工作,并且花了2分钟来编写和检查。就我个人而言,我会放弃gem并执行
host.split(?)[-2]
。域名规范非常稳定。@Max
split(?)[-2]
不会可靠地返回域中最重要的部分,例如,对于
www.google.com.au
www.amazon.co.uk
等有效域,它将返回
com
co
。而
PublicSuffix
gem将返回
google
amazon
require 'public_suffix'
require 'uri'

url  = 'https://www.linkedin.com/asdkfjasd'
host = URI.parse(url).host                 # => 'www.linkedin.com'
PublicSuffix.parse(host).sld               # => 'linkedin'