Главная страница
    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.46 MB
Время: 0.004 c
6-90332
Star
2001-11-06 09:14
2002.01.28
Как определить комп, наиболее активно загружающий сеть?


1-90313
NLO
2002-01-11 07:10
2002.01.28
AutoCAD


1-90306
ProfiUgl
2002-01-11 11:09
2002.01.28
Помогите разобраться с COM сервером


6-90343
Dmitry V. Averuanov
2001-11-05 14:26
2002.01.28
Удаленное управление !


1-90265
panov
2002-01-09 08:46
2002.01.28
QReport.Preview Как это работает?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский