Regex - выдернуть регуляркой домен из списка URL и доменов

Регистрация
26.05.2020
Сообщения
495
Благодарностей
172
Баллы
43
В-общем, имеется список рандомных url, как в виде конкретных доменов, так и в виде ссылок на определенные страницы, в том числе и параметрами, пример ниже.

forum.site.ru
www.site.info/

В результате работы хотелось бы получить следующий список:

metrika.site.ru
site.guru
site.ru
forum.site.com
forum.site.ru
site.info

То есть, результатом работы регулярки необходимо отсечь протокол и приставку www при ее наличии, а также хвосты и слеши при их наличии. При этом важно оставлять поддомены 3 уровня (кроме www) и чтоб ни одна строка из списка не потерялась...
Что бы я не пробовал, все равно получается бяка какая-то, то www останется, то хвост ссылки, то еще какая-нибудь дрянь.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 270
Благодарностей
9 054
Баллы
113
Регистрация
26.05.2020
Сообщения
495
Благодарностей
172
Баллы
43
для этих целей есть URI
sergodjan66 прав - данный код мне не подошел... Ну что ж, придется поиском-заменой реализовывать... Но в таком случае нужна регулярка, обрезающая хвост ссылки, то есть все, что после слеша после домена и сам слеш. Вопрос, как сделать это?
 

porileenvej

Client
Регистрация
09.05.2020
Сообщения
99
Благодарностей
131
Баллы
33
В-общем, имеется список рандомных url, как в виде конкретных доменов, так и в виде ссылок на определенные страницы, в том числе и параметрами, пример ниже.

forum.site.ru
www.site.info/

В результате работы хотелось бы получить следующий список:

metrika.site.ru
site.guru
site.ru
forum.site.com
forum.site.ru
site.info

То есть, результатом работы регулярки необходимо отсечь протокол и приставку www при ее наличии, а также хвосты и слеши при их наличии. При этом важно оставлять поддомены 3 уровня (кроме www) и чтоб ни одна строка из списка не потерялась...
Что бы я не пробовал, все равно получается бяка какая-то, то www останется, то хвост ссылки, то еще какая-нибудь дрянь.
C#:
//project.Lists["lst"] - список с сылками
//project.Lists["res"] - очищенный список

var lst = project.Lists["lst"].ToList();
lock(SyncObjects.ListSyncer)
{
    foreach(string s in lst)
    {
        string domain = s;
        if(domain.StartsWith("http"))
            domain = domain.Split('/')[2];
        if(domain.StartsWith("www."))
            domain = domain.Replace("www.", "");
        if(domain.Contains("/"))
            domain = domain.Split('/')[0];
        if(!project.Lists["res"].Contains(domain))
            project.Lists["res"].Add(domain);
    }
}
 
  • Спасибо
Реакции: Андрейка2020

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
С просторов форума:
C#:
    var url = project.Variables["url"].Value;

    url = url.ToLower();
    url = url.Replace("http://", "").Replace("https://", "").Replace("www.", "");

    if (url.IndexOf("/") > -1) {
     url = url.Substring(0, url.IndexOf("/"));
    }

    return url;
 
Регистрация
26.05.2020
Сообщения
495
Благодарностей
172
Баллы
43
porileenvej, Igorii - благодарствие вас величайшее! :az: Вот она, магия сишарпа в действии! 8-) Один сниппет на случай работы с переменной, второй со всем списком в целом! Круто! :bp:
 

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
С просторов форума:
C#:
    var url = project.Variables["url"].Value;

    url = url.ToLower();
    url = url.Replace("http://", "").Replace("https://", "").Replace("www.", "");

    if (url.IndexOf("/") > -1) {
     url = url.Substring(0, url.IndexOf("/"));
    }

    return url;
Как подправить снипет чтобы и сабдомен вырезал?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 270
Благодарностей
9 054
Баллы
113
  • Спасибо
Реакции: Greez и Artur159

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)