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

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

RegExp [D7]


dDan ©   (2005-03-07 13:36:00) 

Доброе время суток господа поздравляю всех дам программистов и программистских дам с наступающим праздников и возник у меня небольшой вопрос вроде не очень сложный но видно в предверии праздника соображаеться тяжко.
Вопрос таков предполодим есть стока
bla bla lba http://domain.com/trat.htmbla bla или bla http://domain.com/fold/bla bla так как мне лучше всего выдернуть из этих строк значения http://domain.com/trat.htmили http://domain.com/fold/
Заранее спасибо вроде разъяснился правильно


palva   (2005-03-07 19:35:00) [1]

DiamondShark ©   (07.03.05 15:09) [7]
> Но всё равно быстрее, чем ждать ответа в форуме, качать, ставить, разбираться как поставленное работает...

Ну можно ведь ничего и не ставить. На машине всегда есть VBScript. И разбираться тоже не надо: делайте все точно также как в перле:

{$APPTYPE CONSOLE}
uses Variants, ActiveX, ComObj;
var RE, mm: OleVariant;
 i: Integer;
begin
 CoInitialize(Nil);
 RE := CreateOleObject('VBScript.RegExp');
 RE.Pattern := ' http://\S+';
 RE.Global := True;
 mm := RE.Execute('bla bla lba http://domain.com/trat.htmbla http://ddd/bla');
 for i := 0 to mm.Count - 1 do  WriteLn(mm.Item[i].Value);
 RE := Unassigned;
end.


jack128   (2005-03-07 17:33:00) [2]

dDan   (07.03.05 17:31) [15]
Поподробнее мона

Подробнее в [1] написано.
И вообще те тут уже две функции привели, бери - не хочу.


dDan   (2005-03-07 17:31:00) [3]

2 jack128 Поподробнее мона. Кста я проверил кое что я же написал что нужно вырвать всю строку эту а не только http://domain.com
Так много ответов аж приятно стало


jack128   (2005-03-07 16:40:00) [4]

GanibalLector ©   (07.03.05 13:47) [2]
Pos знаю,а вот PоsEx нет.Даже моя D5 молчит.

сабж:
dDan   (07.03.05 13:36)
RegExp [ D7]

Добавлен дополнительный параметр, указывающий с какого символа начинать поиск.


Просто Джо   (2005-03-07 16:17:00) [5]


> Но к URL это не имеет никакого отношения.


А в вопросе и не фигурирует никакие "URL":

как мне лучше всего выдернуть из этих строк значения http://domain.com/trat.htm

;)


DiamondShark   (2005-03-07 16:06:00) [6]

На это не надо.
Но к URL это не имеет никакого отношения.


Юрий Зотов   (2005-03-07 15:50:00) [7]

> DiamondShark ©   (07.03.05 15:09) [7]

На это надо 30-40 минут?

function ExtractURL(const Src: string): string;
var
 i: integer;
begin
 Result := '';
 if Src <> '' then
   with TStringList.Create do
   try
     Text := StringReplace(Trim(Src), ' ', #13#10, [rfReplaceAll]);
     i := 0;
     while (i < Count) and (Pos('://', Strings[i]) < 2) do
       Inc(i);
     if i < Count then
       Result := Strings[i]
   finally
     Free
   end
end;


dDan   (2005-03-07 15:36:00) [8]

2 GuAV жжет :) красавец имхо то что надо респеки


GuAV   (2005-03-07 15:32:00) [9]


> Минут 30-40...

Нет, за 5.

procedure GetURLs(const Text: string; S: TStrings);
var I, J: Integer;
begin
 I := PosEx('http://', Text);
 while I <> 0 do
 begin
   J := 0;
   {$B-}
   while (Length(Text) >= (I + J)) and
     (Text[I+J] in ['A'..'Z',':','a'..'z','_','.','/','\']) do
       Inc(J);
   S.Add(Copy(Text, I, J));
   I := PosEx('http://', Text, I + 1);
 end;
end;


dDan   (2005-03-07 15:22:00) [10]

Уже скачен был и установлен а разобраться это минутное дело точнее уже разобрался.


DiamondShark   (2005-03-07 15:09:00) [11]

Ну, 5 минут -- это, имхо, слишком круто. Минут 30-40...
Но всё равно быстрее, чем ждать ответа в форуме, качать, ставить, разбираться как поставленное работает...


Юрий Зотов   (2005-03-07 14:37:00) [12]

То есть, вместо того, чтобы за 5 минут написать простенькую маленькую функцию, будем ставить аж целый модуль.

Дело, конечно, хозяйское, но так недолго дойти и до поиска компонента, вычисляющего 2+2.


dDan   (2005-03-07 14:19:00) [13]

2 Sergey2005
Сенкс


Sergey2005   (2005-03-07 14:09:00) [14]

2 dDan:
Известный класс TRegExpr ( http://www.regexpstudio.com)

Выражение что-то вроде:
^| ( http://.{1,}) |$


dDan   (2005-03-07 13:53:00) [15]

>jack128
Этот вариант я конечно же использую но имхо на RegExp'ах будет проще и быстрее а иначе бы не спрашивал.


GanibalLector   (2005-03-07 13:47:00) [16]

2 jack128 ©   (07.03.05 13:42) [1]
Не понял...Может я от жизни отстал?
Pos знаю,а вот PоsEx нет.Даже моя D5 молчит.
Женя,разъясни ;)


jack128   (2005-03-07 13:42:00) [17]

PosEx/Copy + F1


Наверх

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