R0 CREW

Поиск e-mail

Есть у кого пример реализации эффективного поиска e-mail адресов?
Желательно в сорсах и без использования сторонних библиотек.

как бы…

procedure TForm1.Button1Click(Sender: TObject);
var garbage,list:string;
    i,sp:integer;
begin
  garbage:=
'
hashdiasb asidhbasoi dyasi mailto:asd@gov.ru bashdb alkshdbl ahsbdlhabsldhb  unknown@otdel.ca 
bahdsb alhsbdlkahs bdlkhabsld hbsa
';
While pos('@',garbage)<>0
do
begin
  i:=pos('@',garbage);
  sp:=i;
  while Copy(garbage,sp,1)<>' '
  do
  sp:=sp+1;
  while ( (Copy(garbage,i,1)<>' ') and (Copy(garbage,i,1)<>':'))
  do
  i:=i-1;
  list:=list+Copy(garbage,i+1,sp-i)+#13#10;
  Delete(garbage,Pos('@',garbage),1);
end;
ShowMessage(list);
end;

так что ли?

В самом простом варианте да, но интересуют варианты по парсингу в более “замусоренной” области ( нет mailto, нет пробелов до/после адреса, разный регистр, разные кодировки ).

без пробелов,хм, чо курим?
хотя есть вариант через доменные зоны.

без пробелов,хм, чо курим?
Поспокойней…

Существуют ограничение на количество возможных символов, на сами символы и прочие признаки и константы к каторым можно привязаться.

100%-го способа не надо, надо чтоб как минимум не пропускал ( далее доп проверки будут ).

А вариант с использованием регулярных выражений?
В некоторых языках, например python, либа с регулярками не будет сторонней

Было-бы идеально, но таскать с собой библиотеки возможности нет.
Требуется использовать только то, что есть в системе ( от 2k до семёрки ).

Кстати о регулярках интересно. Библиотеки таскать… хм а зачем. Кстати по делу видел Компонент для работы с регулярками в Delphi и Срр. Посмотрел и почитал комменты, говорят очень сложны по началу, если нужно то поищу

:smiley: истинные дзен-кодеры, пользуются только системными компонентами, каждый алгоритм пишут с нуля, о регулярках и не слыхивали.

А если серьезно, то в них ничего особо сложного нет, могу посоветовать книгу Дж. Фридла
“Регулярные выражения”, после освоения будете думать “регулярками”.

Походу ток регулярки ( в винде их отрыть не удалось )

http://habrahabr.ru/blogs/regex/55820/

Как вариант искать слова с наличием в них двух символов @ и “.” , можно еще доп.условие, не просто “.” а с известными доменами первого уровня:

@ и ‘.com’ и тп

Как будет время и если нужно, могу набросать на сях примерчик, ну или кто другой возьмется