Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Вниз
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c