Главная страница
    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.033 c
14-1109406030
SOFS
2005-02-26 11:20
2005.03.20
Задачка


1-1110222052
ramil
2005-03-07 22:00
2005.03.20
Как сделать программу с входными параметрами


3-1108819979
Chel
2005-02-19 16:32
2005.03.20
Сортировка


1-1109857697
salexn
2005-03-03 16:48
2005.03.20
Загрузка dcr файла в ImageList


14-1109743450
Чеширский_Кот
2005-03-02 09:04
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский