Главная страница
    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.003 c
1-90255
Delphimun
2002-01-09 15:00
2002.01.28
Как искать во вложенных папках файлы?


14-90374
asafr
2001-12-04 18:28
2002.01.28
Появился lel и всё оживилось... О женщинах опять заговорили...


4-90416
Роман55
2001-11-26 09:11
2002.01.28
Рабочий стол


1-90299
Даггер
2002-01-08 11:49
2002.01.28
Хочется извратиться, а знаний не хватает...


1-90287
NY152
2002-01-08 14:19
2002.01.28
Вопрос о привязке проги к компу





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