Регулярка для парсинга доменов

blackb

Новичок
Регистрация
15.04.2018
Сообщения
2
Благодарностей
0
Баллы
1
Всем привет.
Нужно регулярное выражение для парсинга доменов.
Регулярка из этого топика не подходит ибо там перед доменов должен быть протокол http/ftp/https и двоеточие.

Пример. Есть текст: (Домен верхнего уровня может быть абсолютно любым)
bla bla bla domen468.ru
bla dom22ain.biz bla
39domain.space bla bla

Регулярка должна выпарсить:
domen468.ru
dom22ain.biz
39domain.space

Кто то может чем то помочь?
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 039
Благодарностей
6 470
Баллы
113

blackb

Новичок
Регистрация
15.04.2018
Сообщения
2
Благодарностей
0
Баллы
1

bad robot

Client
Регистрация
07.03.2011
Сообщения
196
Благодарностей
49
Баллы
28
попробуй

Код:
[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,5}
помогите с адаптацией под кириллические домены и имена сайтов, типа

НашСайт.Ру
наш-сайт.рф
нашсайт.ORG

желательно и чтобы понимало в любом регистре
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 183
Баллы
113
помогите с адаптацией под кириллические домены и имена сайтов, типа

НашСайт.Ру
наш-сайт.рф
нашсайт.ORG

желательно и чтобы понимало в любом регистре
Надо просто заменить "a-z" на "a-zA-Zа-яА-ЯёЁ", будет:
Код:
[a-zA-Zа-яА-ЯёЁ0-9_-]+(\.[a-zA-Zа-яА-ЯёЁ0-9_-]+)*\.[a-zA-Zа-яА-ЯёЁ]{2,5}
UPD1:
Хз как там на практике такая регулярка отрабатывает, то я бы еще добавил условие в конец, чтобы пропускало вот такой мусор:
Код:
наш-сайт.рфффффффффффффф
Код:
[a-zA-Zа-яА-ЯёЁ0-9_-]+(\.[a-zA-Zа-яА-ЯёЁ0-9_-]+)*\.[a-zA-Zа-яА-ЯёЁ]{2,5}(?=$|[^a-zA-Zа-яА-ЯёЁ0-9_-])
 
Последнее редактирование:
  • Спасибо
Реакции: backoff и bad robot

zenno.xxx

Client
Регистрация
05.10.2016
Сообщения
262
Благодарностей
248
Баллы
43
вполне возможно, что заглавные можно опустить из диапазона:
все чаще замечаю, что срабатывает и так [a-zа-яё]
(тестировал в notepad++)
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 183
Баллы
113
вполне возможно, что заглавные можно опустить из диапазона:
все чаще замечаю, что срабатывает и так [a-zа-яё]
(тестировал в notepad++)
все зависит от среды использования. В notepad++ просто по умолчанию отключен чекбокс "Учитывать регистр".
 

zenno.xxx

Client
Регистрация
05.10.2016
Сообщения
262
Благодарностей
248
Баллы
43
отлично! тогда встречный вопрос - почему зеннопостер не видит [A-Z] ?
(вполне возможно я не так сильно подкован в regexp, хотя всегда придерживался плана [a-zA-Z])

Может я что-то не верно делал, но [a-z] почему-то всегда приравнивалось к [A-Z]
(и я не мог поднять/отследить ЗАглавные буквы в предложении, по типу [^A-Z]).
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113
отлично! тогда встречный вопрос - почему зеннопостер не видит A-Z ?
(вполне возможно я не так сильно подкован в regexp, хотя всегда придерживался плана [a-zA-Z])

Может я что-то не верно делал, но [a-z] почему-то всегда приравнивалось с [A-Z]
(и я не мог поднять/отследить ЗАглавные буквы в предложении, по типу [^A-Z]).
что-то ты неправильно делал
 

zenno.xxx

Client
Регистрация
05.10.2016
Сообщения
262
Благодарностей
248
Баллы
43
Парни, тогда сделаем так)

Как отследить в предложении начальный символ, если он равен [^a-z], или не [A-Z]
(т.е я хочу удалить все предложения, что не с заглавного символа)
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 866
Баллы
113
Зачем вы придумываете велосипеды?) Уже ведь есть регулярки, которые работают по RFC. Я вот такие юзаю (для удаления/очистки):
C#:
content = Regex.Replace(content, @"((www\.|(http|https|ftp|news|file)+\:\/\/)[&#95_;.a-z0-9-]+\.[a-z0-9\/&#95_;:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])", "", RegexOptions.IgnoreCase);
content = Regex.Replace(content, @"(?:[-a-z0-9@:%_\+~.#=]{2,256}\.)?([-a-z0-9@:%_\+~#=]*)\.[a-z]{2,6}\b(?:[-a-z0-9@:%_\+.~#?&\/\/=]*)", "", RegexOptions.IgnoreCase);
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113
он равен [^a-z], или не [A-Z]
это какое-то противоречивое условие
Если предложения в списке и достаточно проверить регистр первого предложения - сойдёт регулярка ^[A-Z]
Нашла что-то - значит первый символ латиница в верхнем регистре
 

zenno.xxx

Client
Регистрация
05.10.2016
Сообщения
262
Благодарностей
248
Баллы
43
думаю лучше проверить на практике...
это взаимные были, если что.. по-моему, все ОКи

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

либо тестовый notepAD++ МЕНЯ ПОДВЕЛ
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113
думаю лучше проверить на практике...
это взаимные были, если что.. по-моему, все ОКи

предоставьте иную информацию из массива.
либо не верно выразился, либо тут все клюют носом.
взаимные этот как?
 

zenno.xxx

Client
Регистрация
05.10.2016
Сообщения
262
Благодарностей
248
Баллы
43
зачем повод давать и объяснять в regexp взаимо регулярки, но попробую.
Да, это была не полная зависимость... кто-то это знал

вопрос не был отвечен?

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

кстати, со мной друзья когда общаются говорят следующее = Ты краток, х*й тебя пойми)))
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113
зачем повод давать и объяснять в regexp взаимо регулярки, но попробую.
Да, это была не полная зависимость... кто-то это знал

вопрос не был отвечен?

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

кстати, со мной друзья когда общаются говорят следующее = Ты краток, х*й тебя пойми)))
я ничего не понял, ну как скажешь
 
  • Спасибо
Реакции: Sanekk и Lord_Alfred

bad robot

Client
Регистрация
07.03.2011
Сообщения
196
Благодарностей
49
Баллы
28
Зачем вы придумываете велосипеды?) Уже ведь есть регулярки, которые работают по RFC. Я вот такие юзаю (для удаления/очистки):
C#:
content = Regex.Replace(content, @"((www\.|(http|https|ftp|news|file)+\:\/\/)[&#95_;.a-z0-9-]+\.[a-z0-9\/&#95_;:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])", "", RegexOptions.IgnoreCase);
content = Regex.Replace(content, @"(?:[-a-z0-9@:%_\+~.#=]{2,256}\.)?([-a-z0-9@:%_\+~#=]*)\.[a-z]{2,6}\b(?:[-a-z0-9@:%_\+.~#?&\/\/=]*)", "", RegexOptions.IgnoreCase);
а можно готовый код как это скормить зеннопостеру? :-) Надо чтобы удяляло из переменной всё, что находится этими регулярками.
 

dert12

Client
Регистрация
24.11.2017
Сообщения
25
Благодарностей
8
Баллы
8
Зачем вы придумываете велосипеды?) Уже ведь есть регулярки, которые работают по RFC. Я вот такие юзаю (для удаления/очистки):
C#:
content = Regex.Replace(content, @"((www\.|(http|https|ftp|news|file)+\:\/\/)[&#95_;.a-z0-9-]+\.[a-z0-9\/&#95_;:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])", "", RegexOptions.IgnoreCase);
content = Regex.Replace(content, @"(?:[-a-z0-9@:%_\+~.#=]{2,256}\.)?([-a-z0-9@:%_\+~#=]*)\.[a-z]{2,6}\b(?:[-a-z0-9@:%_\+.~#?&\/\/=]*)", "", RegexOptions.IgnoreCase);
:ay:

89112
 

modeler

Client
Регистрация
14.11.2014
Сообщения
62
Благодарностей
5
Баллы
8
А как можно спарсить домен .com только? а то попадаются com.br com.ua и пр ? Какой регуляркой ?
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
545
Благодарностей
1 124
Баллы
93
А как можно спарсить домен .com только? а то попадаются com.br com.ua и пр ? Какой регуляркой ?
[a-z0-9_-]+(\.[a-z0-9_-]+)*\.com

upd: учел варианты, когда есть поддомен (com.ua и т.д.). Берет только где только .com
[a-z0-9_-]+(\.[a-z0-9_-]+)*\.com(?!\.[a-z0-9_-]+)\b — пример regex101
 
Последнее редактирование:
  • Спасибо
Реакции: modeler

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
118
Баллы
43

backoff

Client
Регистрация
20.04.2015
Сообщения
6 039
Благодарностей
6 470
Баллы
113
Зачем вы придумываете велосипеды?) Уже ведь есть регулярки, которые работают по RFC. Я вот такие юзаю (для удаления/очистки):
C#:
content = Regex.Replace(content, @"((www\.|(http|https|ftp|news|file)+\:\/\/)[&#95_;.a-z0-9-]+\.[a-z0-9\/&#95_;:@=.+?,##%&~-]*[^.|\'|\# |!|\(|?|,| |>|<|;|\)])", "", RegexOptions.IgnoreCase);
content = Regex.Replace(content, @"(?:[-a-z0-9@:%_\+~.#=]{2,256}\.)?([-a-z0-9@:%_\+~#=]*)\.[a-z]{2,6}\b(?:[-a-z0-9@:%_\+.~#?&\/\/=]*)", "", RegexOptions.IgnoreCase);
подскажи плиз как скомпилировать в готовый варик, чето никак не выходит
желательно чтоб и кириллицу искал тоже
 

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