Какое регулярное выражение я могу использовать, чтобы получить доменное имя из URL в Ruby? - PullRequest
6 голосов
/ 24 июля 2010

Я пытаюсь создать регулярное выражение для извлечения домена с указанным URL.

для:

http://www.abc.google.com/
http://abc.google.com/
https://www.abc.google.com/
http://abc.google.com/

должно дать:

abc.google.com

Ответы [ 4 ]

25 голосов
/ 24 июля 2010
URI.parse('http://www.abc.google.com/').host
#=> "www.abc.google.com"

Не регулярное выражение, но, вероятно, более надежное, чем все, что мы придумали здесь.

URI.parse('http://www.abc.google.com/').host.gsub(/^www\./, '')

Если вы также хотите удалить www., это будет работать без каких-либо ошибок, еслиwww. там нет.

1 голос
/ 24 июля 2010

Не знаю много о ruby, но этот шаблон регулярных выражений дает вам последние 3 части URL-адреса, исключая косую черту с минимумом 2 символа на часть.

([\w-]{2,}\.[\w-]{2,}\.[\w-]{2,})/$
0 голосов
/ 28 февраля 2014

вы можете использовать гем имя_домена для такого рода работыС README:

require "domain_name"
host = DomainName("a.b.example.co.uk")
host.domain         #=> "example.co.uk"
0 голосов
/ 24 июля 2010

Ваш вопрос немного расплывчатый.Можете ли вы дать точное определение того, что именно вы хотите сделать точно ?(Желательно с комплектом тестов.) Прямо сейчас весь ваш вопрос говорит о том, что вам нужен метод, который всегда возвращает 'abc.google.com'.Это просто:

def extract_domain
  return 'abc.google.com'
end

Но это, вероятно, не то, что вы имели в виду ...

Кроме того, вы говорите, что вам нужен Regexp.Зачем?Что не так, например, с использованием класса URI?В конце концов, разбор и манипулирование URI - это в точности , для чего он был создан!

require 'uri'

URI.parse('https://abc.google.com/').host # => 'abc.google.com'

И, наконец, вы говорите, что « пытается извлечь домен », но вы никогда не указываете, что вы подразумеваете под «доменом».Похоже, вы иногда имеете в виду полное доменное имя, а иногда случайно отбрасывает части полного доменного имени, но в соответствии с какими правилами?Например, для полного доменного имени abc.google.com имя домена - google.com, а имя хоста - abc, но вы хотите, чтобы оно возвращало abc.google.com, которое является не просто именем домена, но full Полное доменное имя.Почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...