Форум: "Основная";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];
ВнизКак найти в заданном тексте, сочетания символов, которые подходят заданной схеме? Найти похожие ветки
← →
Delphimun (2002-01-07 12:11) [0]Как найти в заданном тексте, сочетания символов, которые подходят заданной схеме?
Например дан текст:
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
← →
Delphimun (2002-01-07 14:14) [1]Схема на мой взгляд будет примерно такой:
##########@##########.##
Только как всё сделать до меня не доходит.
← →
3d[Power] (2002-01-07 14:17) [2]Собиратель емэйлов блин!
← →
Leshuz (2002-01-07 16:44) [3]Знаю такую штуку, называется лексический анализатор.
Если очень нужно, могу выслать аналогичный пример, но переделывать будете сами ;)
← →
Delphimun (2002-01-07 18:24) [4]Leshuz © >
пришли пожалуйста!
← →
marat_from_tomsk (2002-01-08 05:08) [5]Рекомендую для использования как раз позволяет определить
соотвествует ли входная строка требуемому образцу
(* (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.
← →
Leshuz (2002-01-10 22:32) [6]Отправил на мыло, ждите привета ;-)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c