![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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