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

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

Кто то может чем то помочь?
 
попробуй

Код:
Развернуть Свернуть Копировать
[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,5}

Работает, спасибо. Только я вместо 5 поставил 9. А то выпарсивались домены не полностью.

Код:
Развернуть Свернуть Копировать
[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,9}
 
попробуй

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

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

желательно и чтобы понимало в любом регистре
 
помогите с адаптацией под кириллические домены и имена сайтов, типа

НашСайт.Ру
наш-сайт.рф
нашсайт.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
вполне возможно, что заглавные можно опустить из диапазона:
все чаще замечаю, что срабатывает и так [a-zа-яё]
(тестировал в notepad++)
 
вполне возможно, что заглавные можно опустить из диапазона:
все чаще замечаю, что срабатывает и так [a-zа-яё]
(тестировал в notepad++)
все зависит от среды использования. В notepad++ просто по умолчанию отключен чекбокс "Учитывать регистр".
 
отлично! тогда встречный вопрос - почему зеннопостер не видит [A-Z] ?
(вполне возможно я не так сильно подкован в regexp, хотя всегда придерживался плана [a-zA-Z])

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

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

Как отследить в предложении начальный символ, если он равен [^a-z], или не [A-Z]
(т.е я хочу удалить все предложения, что не с заглавного символа)
 
Зачем вы придумываете велосипеды?) Уже ведь есть регулярки, которые работают по 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);
 
он равен [^a-z], или не [A-Z]
это какое-то противоречивое условие
Если предложения в списке и достаточно проверить регистр первого предложения - сойдёт регулярка ^[A-Z]
Нашла что-то - значит первый символ латиница в верхнем регистре
 
думаю лучше проверить на практике...
это взаимные были, если что.. по-моему, все ОКи

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

либо тестовый notepAD++ МЕНЯ ПОДВЕЛ
 
Последнее редактирование:
думаю лучше проверить на практике...
это взаимные были, если что.. по-моему, все ОКи

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

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

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

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

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

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

кстати, со мной друзья когда общаются говорят следующее = Ты краток, х*й тебя пойми)))
я ничего не понял, ну как скажешь
 
  • Оценить
Реакции: Sanekk и Lord_Alfred
Зачем вы придумываете велосипеды?) Уже ведь есть регулярки, которые работают по 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);
а можно готовый код как это скормить зеннопостеру? :) Надо чтобы удяляло из переменной всё, что находится этими регулярками.
 
Зачем вы придумываете велосипеды?) Уже ведь есть регулярки, которые работают по 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
 
А как можно спарсить домен .com только? а то попадаются com.br com.ua и пр ? Какой регуляркой ?
 
А как можно спарсить домен .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
Зачем вы придумываете велосипеды?) Уже ведь есть регулярки, которые работают по 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)