如何解析URL并提取所需的子字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解析URL并提取所需的子字符串相关的知识,希望对你有一定的参考价值。

说我有这样的字符串:"http://something.example.com/directory/"

我想要做的是解析这个字符串,并从字符串中提取"something"

第一步,显然要检查以确保该字符串包含"http://" - 否则,它应该忽略该字符串。

但是,我如何才能在该字符串中提取"something"?假设将要评估的所有字符串都具有类似的结构(即我正在尝试提取URL的子域 - 如果正在检查的字符串确实是有效的URL - 其中有效的是以"http://"开头)。

谢谢。

附:我知道如何检查第一部分,即我可以简单地将字符串拆分为"http://",但这并不能解决完整的问题,因为这将产生"http://something.example.com/directory/"。我想要的只是"something",没有别的。

答案

我这样做:

require 'uri'

uri = URI.parse('http://something.example.com/directory/')
uri.host.split('.').first
=> "something"

URI内置于Ruby中。它不是功能最齐全的,但它足以为大多数URL执行此任务。如果你有IRIs然后看看Addressable::URI

另一答案

您可以使用URI

uri = URI.parse("http://something.example.com/directory/")
puts uri.host
# "something.example.com"

然后你就可以在主机上工作了。 或者有来自domainatrix的宝石Remove subdomain from string in ruby

require 'rubygems'
require 'domainatrix'

url = Domainatrix.parse("http://foo.bar.pauldix.co.uk/asdf.html?q=arg")
url.public_suffix       # => "co.uk"
url.domain              # => "pauldix"
url.subdomain           # => "foo.bar"
url.path                # => "/asdf.html?q=arg"
url.canonical           # => "uk.co.pauldix.bar.foo/asdf.html?q=arg"

你可以拿走子域名。

另一答案

好吧,你可以使用正则表达式。像/http://([^.]+)/这样的东西,也就是第一组非'''。 http之后的字母。

看看http://rubular.com/。您也可以针对一组测试测试正则表达式,这对于学习此工具非常有用。

以上是关于如何解析URL并提取所需的子字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何减少提取文件所需的时间?

如何过滤包含 Python 中的子字符串的 jsonpath 表达式中的 URL 列表

如何打印(在屏幕上)带有外部 url 的 iframe 所需的所有 JS 代码

无法提取所需的文本部分并从某些元素中删除其余部分

仅从网站中提取所需的列

Vue:如何将数据从父组件传递到所需的子组件?