Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как найти в заданном тексте, сочетания символов, которые подходят заданной схеме? [D6, Win95/98]


Delphimun ©   (2002-01-07 12:11:00) 

Как найти в заданном тексте, сочетания символов, которые подходят заданной схеме?

Например дан текст:
fgjkfgj
g
ffgfgfg fgfgfk fgfjg Delphimun@rambler.ru dfdfdf ddfdf Maxsim@mail.ru dsdsds sdsd dsd Artem@pochta.ru kfjgkfjgjfg jfkgj
gfg fgfg Svete@world.com dsdssdsdsds dfdfd/ @gffgfg ffgf

И мне в этом тексте нужно найти все e-mail -ы и поместить их скажем в масив или listbox, тоесть, чтоб в listbox-е были записи:

Delphimun@rambler.ru
Maxsim@mail.ru
Artem@pocta.ru
Sveta@world.com


Leshuz   (2002-01-10 22:32:00) [1]

Отправил на мыло, ждите привета ;-)


marat_from_tomsk   (2002-01-08 05:08:00) [2]

Рекомендую для использования как раз позволяет определить
соотвествует ли входная строка требуемому образцу


(* (c) 1996, tomsk, guards, marat@tts.tomsk.su, ap@tts.tomsk.su *)

unit MatchUnits;

interface

uses Classes;

const
c1 = "*";
c2 = "?";

function Match(str, pattern: string): boolean;

implementation

function RMatch(str, pattern: string; i, j: integer): boolean;
var
k: integer;
f: boolean;
begin
if pattern = "" then begin result := true; exit;
end;
while true do begin
if (i > Length(str)) and (j > Length(pattern)) then begin
result := true;
exit;
end else if j > Length(pattern) then begin
result := false;
exit;
end else if pattern[j] = c1 then begin
k := i;
if j = Length(pattern) then begin
result := true;
exit;
end else begin
while true do begin
f := Rmatch(str, pattern, k, j + 1);
if (f or (k > Length(str))) then begin
result := f;
exit;
end;
inc(k);
end;
end;
end else if i > Length(str) then begin
result := false;
exit;
end else if ((pattern[j] = c2) and (i <= Length(str)) or (pattern[j] = str[i])) then begin
inc(i);
inc(j);
end else begin
result := false;
exit;
end;

end;
end;

function Match(str, pattern: string): boolean;
var
f: boolean;
begin
f := RMatch(str, pattern, 1, 1);
result := f;
end;

end.


Delphimun   (2002-01-07 18:24:00) [3]

Leshuz © >
пришли пожалуйста!


Leshuz   (2002-01-07 16:44:00) [4]

Знаю такую штуку, называется лексический анализатор.
Если очень нужно, могу выслать аналогичный пример, но переделывать будете сами ;)


3d[Power]   (2002-01-07 14:17:00) [5]

Собиратель емэйлов блин!


Delphimun   (2002-01-07 14:14:00) [6]

Схема на мой взгляд будет примерно такой:

##########@##########.##

Только как всё сделать до меня не доходит.


Наверх

Титульная страница Поиск, карта сайта Написать письмо