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

Регистрация
26.05.2020
Сообщения
556
Благодарностей
196
Баллы
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 789
Благодарностей
5 737
Баллы
113

Sergodjan

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

porileenvej

Client
Регистрация
09.05.2020
Сообщения
99
Благодарностей
133
Баллы
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
Сообщения
374
Благодарностей
304
Баллы
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
Сообщения
556
Благодарностей
196
Баллы
43
porileenvej, Igorii - благодарствие вас величайшее! :az: Вот она, магия сишарпа в действии! 8-) Один сниппет на случай работы с переменной, второй со всем списком в целом! Круто! :bp:
 

udder

Client
Регистрация
28.03.2017
Сообщения
638
Благодарностей
140
Баллы
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 652
Баллы
113

Sergodjan

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

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