Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1108493039
mefisto
2005-02-15 21:43
2005.03.20
Правильная инсталяция Oracle 8i (2)


10-1086021834
Bizon's
2004-05-31 20:43
2005.03.20
Первые шаги в создании интерфейсов


1-1109698082
Shnabs
2005-03-01 20:28
2005.03.20
Компонент типа TComboBox


1-1110181947
DSKalugin
2005-03-07 10:52
2005.03.20
событие "TForm.OnAfterShow"


1-1109943377
100a
2005-03-04 16:36
2005.03.20
Стандартные функции удаления файлов





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