Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

RegExp   Найти похожие ветки 

 
dDan   (2005-03-07 13:36) [0]

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


 
jack128 ©   (2005-03-07 13:42) [1]

PosEx/Copy + F1


 
GanibalLector ©   (2005-03-07 13:47) [2]

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


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

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


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

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

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


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

2 Sergey2005
Сенкс


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

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

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


 
DiamondShark ©   (2005-03-07 15:09) [7]

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


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

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


 
GuAV ©   (2005-03-07 15:32) [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:36) [10]

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


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

> 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;


 
DiamondShark ©   (2005-03-07 16:06) [12]

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


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


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


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

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

;)


 
jack128 ©   (2005-03-07 16:40) [14]

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

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

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


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

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


 
jack128 ©   (2005-03-07 17:33) [16]

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

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


 
palva ©   (2005-03-07 19:35) [17]

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.htm bla http://ddd/ bla");
 for i := 0 to mm.Count - 1 do  WriteLn(mm.Item[i].Value);
 RE := Unassigned;
end.



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.065 c
14-1108302776
Юрий Зотов
2005-02-13 16:52
2005.03.20
Прощай, диалап!


3-1108715065
Prohodil Mimo
2005-02-18 11:24
2005.03.20
Как в IB6 удалить FOREIGN KEY ?


1-1109835811
Walker
2005-03-03 10:43
2005.03.20
Rave reports


3-1108921984
Raul Kartes
2005-02-20 20:53
2005.03.20
БД.Delphi


1-1109888217
Германн
2005-03-04 01:16
2005.03.20
EInOutError - Invalide File Name