Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.45 MB
Время: 0.005 c
4-90440
Alex870
2001-11-26 21:37
2002.01.28
Подскажите,


3-90210
Грифон
2001-12-23 22:26
2002.01.28
SQL


1-90323
Surprising
2002-01-06 17:36
2002.01.28
Сохранить форму как файл графики


3-90206
victor
2001-12-24 10:07
2002.01.28
Логическое поле в ОРАКЛЕ


3-90229
Bura
2001-12-21 19:05
2002.01.28
Transaction





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский