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

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
480
Благодарностей
200
Баллы
43
Нет ничего более худого чем скрапить эмейлы... Обрыскав форум в поисках - единственная регулярка, которая мне хоть как-то помогла была следующая:
C#:
string regex = @"[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\.\-A-Za-z0-9]{2,}";
Возникли следующие проблемы: она cпарсила другие результаты, которые не удовлетворяют:

image002.jpg@01D25206.709DB
9@5xe
a0bca9d78ab7489fab05d3ef9d815e32@sentry.io
org.mozilla.javascript.gen.c10@3e0913fc
ajax-loader@2x.gif
ania@polish (вместо ania@polish2english.com)
cached@1574596174 --
favico@2x.ico
Код:
fontSize16@md.x;fontSize16@lg.x;paddingTop30px@xs-only.x;paddingBottom30px@xs-only.x;displayblock@md.x;width728px@sm.x;width984px@md.x;width1160px@lg.x;displayinline@sm.x;justifyContentspace-between@xs-only.x;fontSize14@md.x;fontSize14@lg.x;right0px@md-only.x;right0px@sm-only.x;displaynone@md.x;fontSize30@md.x;fontSize31@lg.x;fontSize22@md.x;fontSize22@lg.x;0@sm.x;maxHeight75px@md.x;marginBottom15px@md.x ;important@md.x  ;marginBottom20px@xs-only.x;textAligncenter@md.x;fontSize41@md.x;fontSize43@lg.x;-40px@sm.x;40px@sm.x;maxHeight568@md.x;maxHeight269@md.x;maxWidthnone@md.x;textAlignleft@md.x;textAlignright@md.x;marginTop0@md.x
Из тупого:
а) как исключить результаты с окончанием .gif/.svg/.jpg
б) как заставить неполные результаты добиваться полных (на примере с anya и другими участниками торжества)

Из серьезного:
Иногда в эмейлах присутствуют знаки: "_" , "-", а так же просто пробел. Если включить пробел в регулярку - начинает парситься всё, что идет после него до конца строки ( иногда тысячи символов).

Спасибо большое за внимание.

P.S. Ещё я прикинул - может написать регулярку, где строка после Знака @ должна заканчиваться на доменные имена? может быть она более избирательна будет?)
 
Последнее редактирование:

Max

Client
Регистрация
17.06.2012
Сообщения
169
Благодарностей
44
Баллы
28
У тебя регулярка в корне неправильная... х3 на каком ты ее форуме взял... Знаки вопроса не нужны. Точка должна быть вне групп символов - так как по большей части встречается очень часто в названии домена. Гугли "email RFC" стандарт и regex.
Плюс даже если ты будешь использовать регексы по стандартам все равно будет попадаться хлам... Мейлы нужно валидировать, для более-менее хорошего результата. Те смотреть что возвращают домены на которых находится ящик.
 
  • Спасибо
Реакции: TwistDanceR

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
480
Благодарностей
200
Баллы
43
У тебя регулярка в корне неправильная... х3 на каком ты ее форуме взял... Знаки вопроса не нужны. Точка должна быть вне групп символов - так как по большей части встречается очень часто в названии домена. Гугли "email RFC" стандарт и regex.
Плюс даже если ты будешь использовать регексы по стандартам все равно будет попадаться хлам... Мейлы нужно валидировать, для более-менее хорошего результата. Те смотреть что возвращают домены на которых находится ящик.
Про валидность - понятно, будет проверка, разговор о первичном парсинге, потому что собрать нужно не много не мало - дофига. За подсказки спасибо.
А взял - из темы "золотая коллекция регулярок".
 

vitashok

Client
Регистрация
20.11.2015
Сообщения
84
Благодарностей
13
Баллы
8
собрать нужно не много не мало - дофига.
А много надо? Просто я тут парсинг запустил одного сайта, то уже больше 2 лямов мейлов насобиралось, а куда их притулить то, х.з. пока
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
480
Благодарностей
200
Баллы
43
А много надо? Просто я тут парсинг запустил одного сайта, то уже больше 2 лямов мейлов насобиралось, а куда их притулить то, х.з. пока
У меня сайт не один, сайтов порядка миллиона, а почта нужна будет только одна.
 

timoxa949

Client
Регистрация
16.11.2018
Сообщения
158
Благодарностей
27
Баллы
28
Если кому надо будет, работает четко:

C#:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
 

yoptoo

Client
Регистрация
14.11.2016
Сообщения
183
Благодарностей
43
Баллы
28
Если кому надо будет, работает четко:

C#:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Спасибо тебе огромное! Мужик, ты просто чертов гений:ay:
 
  • Спасибо
Реакции: пfggggggghj и Ondasai

Ondasai

Новичок
Регистрация
11.07.2021
Сообщения
3
Благодарностей
0
Баллы
1
Если кому надо будет, работает четко:

C#:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Я без понятия, откуда такие знания у вас :-)
 

sistemanipel

Client
Регистрация
28.08.2013
Сообщения
31
Благодарностей
1
Баллы
8
Если кому надо будет, работает четко:

C#:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
эта регулярка нагребла такое:

всего 2 валидных емейла (дубль). Как подправить то?
 
Последнее редактирование:
  • Спасибо
Реакции: Nick

traffman

Client
Регистрация
30.11.2018
Сообщения
91
Благодарностей
102
Баллы
33
Ещё выпаршивает вот такие емаилы
//ui-avatars.com/api/?name=alexkili89@bk.ru

Попробуйте вот эту
[a-z0-9](?:[a-z0-9\-\._+]*[a-z0-9_])@[\w\._-]+\.[\w]{2,6}
 
Последнее редактирование:
  • Спасибо
Реакции: sistemanipel

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