2015-03-15 3 views
-2

Я борющегося с формированием регулярных выражений, которые будут соответствовать:Регулярное выражение, чтобы соответствовать только домен из URL

  1. домена Только в случае URL
  2. Всего строки в случае отсутствия URL

приемочного испытания (регулярное выражение должно соответствовать жирный текст):

  • HTTP: // mozart.co.uk
  • https: // avocado.si/hmm
  • http://www. qwe123qwe.com
  • Старбакс
  • Benchmark 123

До сих пор я пришел с этим:

([^\/\/]+)(?:,|$) 

Он отлично работает, но не для URL-адресов с конечная косая черта на конце. Как я могу изменить выражение, чтобы включить полный путь (все с правой стороны http (s): //)? Спасибо.

+0

Ваше регулярное выражение как указано '([^ \/\ /] +) (?:, | $)' Соответствует любой строке с четным числом символов без косой черты, заканчивающихся запятой или концом строки. Я не думаю, что это так близко, как вы думали, это было ... –

+0

Непонятно - вы хотите домен или оставшуюся часть URL-адреса? В https://avacado.si/hmm вы включили '/ hmm', который не является частью домена. –

+0

Мне нужно добавить, что мне нужно использовать это регулярное выражение в сочетании с упорядочением Postgres подстрокой, например: «order by substring (column, regex)», поэтому это регулярное выражение должно соответствовать только одной группе, и у меня также нет URL-адреса анализируя утилиты. –

ответ

1

Это регулярное выражение будет соответствовать им, если оно начинается с http: // или https: // до следующего слэша. Если он не начинается с http: // или https: //, то он будет соответствовать всей строке. Достаточно близко?

(?:^https?:\/\/([^\/]+)(?:[\/,]|$)|^(.*)$) 

Следует отметить, что большинство языков имеют встроенные функции для правильного анализа URL-адресов, и это предпочтительнее.

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

+0

Это соответствует только домену, а не пути после домена. Ваши спецификации выше были неоднозначными (т. Е. Описание не соответствовало примеру), поэтому я пошел с вашим описанием. –

+0

Обратите внимание на мой ответ на ваш комментарий по моему вопросу. Из-за природы языка мне нужно регулярное выражение, которое извлекает только одну подходящую группу. –

Смежные вопросы