Вам просто нужно, чтобы убедиться, что вы подходите http://
или https://
, которые необязательно следуют с www.
, матч и захватить на хост URL часть до первого /
, а затем сопоставить остальные, и заменить на обратная ссылка к первой группе захвата $1
, и для того, чтобы удалить .
из host.com
вам нужно использовать вторую группу захвата, как это:
$DomainAccount =~ s/^https?:\/\/(?:www\.)?([^\/.]+)\.([^\/.]+).*/$1$2/i;
Выход для "https://www.My-Domain.com/"
: My-Domaincom
См regex demo here.
Примечание. Я добавил флагов без учета регистра /i
, чтобы убедиться, что образец может обрабатывать корпус HTTP://
.
регулярное выражения совпадений:
^
- начало строки
https?:\/\/
- буквальная последовательность символов http://
или https://
(?:www\.)?
- один или нулевых вхождения буквальной последовательности символов www.
([^\/.]+)
- Группа 1: один или несколько символов, кроме /
и .
\.
- буквальная точка
([^\/.]+)
- Группа 2: один или несколько других, чем /
символов и .
.*
- остальные линии
Для решения комментарий choroba в, вот двухэтапное решение, которое будет работать с URL-адресами, содержащими более одной точки в главной части:
$DomainAccount =~ s/^https?:\/\/(?:www\.)?([^\/]+).*/$1/i;
$DomainAccount =~ s/\.//g;
Возможно, '$ DomainAccount = ~ s/^ https?: \/\/(?: www \.)? // i;'? –
Нет, я до сих пор в конечном итоге: My-Domain.com/ – Blnukem
Ага, вам нужно перейти к первому '/', использовать '$ DomainAccount = ~ s/^ https?: \/\/(?: www \.)? ([^ \ /] +). */$ 1/i; ' –