Извлечение домена второго уровня из URL с помощью RegEx - PullRequest
0 голосов
/ 05 января 2019

Обновление. Предположим, что доменное имя - это два последних элемента имени хоста, за исключением того, что вторым является co или com , в этом случае, Доменное имя - это последние три элемента. Если есть только один элемент -> это доменное имя.

Что минимальные случаи для обработки:

http://google.com          -> google.com
http://www.google.com      -> google.com
http://abc.cde.google.com  -> google.com
http://google.co.uk        -> google.co.uk
http://www.google.com.au   -> google.com.au
http://www.mysite.info     -> mysite.info
http://www.mysite.business -> mysite.business
http://localhost           -> localhost

Regex песочница для этого вопроса

Вот тесты и некоторые начальные регулярные выражения https://regex101.com/r/AyuW88/3

В качестве бонуса еще несколько случаев (но я был бы уже очень рад, если бы регулярное выражение работало только с предыдущими случаями)

http://google.com:8080      -> google.com
http://www.google.com?q=abc -> google.com
http://www.google.com/smth  -> google.com

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Это должно работать для ваших простых случаев:

 r'([^\/\.]+\.(com|co)\.\w+|[^\/\.]+.\w+)$'

Захвачено в группе 1. Ваше предположение "за исключением того, что второе - это co или com", жестко закодировано в регулярном выражении. Также на линии есть опечатка:

http://www.google.com.au   -> google.com.ua

Должно быть "google.com.au"

0 голосов
/ 05 января 2019

Это регулярное выражение должно указывать на ваш вариант использования.

Регулярное выражение: (?<=http(s)?:\/\/).*

Пояснение:
(?<=http(s)?:\/\/): положительный обзор, чтобы узнать, является ли слово http или https.
.*: захватит все после этого.

Ссылка: https://regex101.com/r/fX1fI5/130

Надеюсь, это поможет.

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