20

次のような文字列があるとします。"http://something.example.com/directory/"

私がやりたいのは、この文字列を解析し、文字列"something"からを抽出することです。

最初のステップは、文字列に文字列が含まれていることを明らかに確認することです"http://"。そうでない場合は、文字列を無視する必要があります。

しかし、どうすれば"something"その文字列からを抽出できますか?これが評価するすべての文字列が同様の構造を持つと仮定します(つまり、URLのサブドメインを抽出しようとしています-調べている文字列が実際に有効なURLである場合-有効はで始まります"http://")。

ありがとう。

PS私は最初の部分をチェックする方法を知っています。つまり、文字列をで分割するだけですが、"http://"それでは問題が完全には解決されません"http://something.example.com/directory/"。私が欲しいのは、"something"他には何もありません。

4

4 に答える 4

36

私はそれをこのようにします:

require 'uri'

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

URIはRubyに組み込まれています。これは最もフル機能ではありませんが、ほとんどのURLに対してこのタスクを実行するのに十分な能力があります。IRIがある場合は、Addressable::URIを確認してください。

于 2012-11-06T03:13:07.820 に答える
8

次のようなURIを使用できます

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

そうすれば、ホストで作業することができます。または、rubyの文字列からサブドメインを削除するから
のgemがありますdomainatrix

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"

そして、あなたはただサブドメインを取ることができます。

于 2012-11-06T02:39:28.580 に答える
2

さて、あなたは正規表現を使うことができます。のようなもの/http:\/\/([^\.]+)/、つまり、非「。」の最初のグループ。後の文字http

http://rubular.com/をチェックしてください。一連のテストに対して正規表現をテストすることもできます。このツールを学ぶのに最適です。

于 2012-11-06T01:49:33.177 に答える
1

URI.parseを使用すると、次のことができます。

require "uri"

uri = URI.parse("http://localhost:3000")
uri.scheme # http
uri.host # localhost
uri.port # 3000
于 2020-07-19T12:10:30.363 に答える