Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.02.14;
Скачать: [xml.tar.bz2];

Вниз

TRegExpr поогите составить выражение   Найти похожие ветки 

 
ford ©   (2009-12-09 11:28) [0]

Всем здравствуйте!
необходимо разбирать URL на составные части
в примере к TRegExpr есть такая строка
"(?i)(FTP|HTTP)://([_a-z\d\-]+(\.[_a-z\d\-]+)+)((/[ _a-z\d\-\\\.]+)+)*"
если её применить на строке
http://www.delphimaster.ru/cgi-bin/forum.pl?n=3
то получаем только
http://www.delphimaster.ru/cgi-bin/forum.pl
причем подстроками будут строки
http, www.delphimaster.ru,  ru, /cgi-bin/forum.pl, /forum.pl

если добавить в последние перечисление символы = и \? то строка войдет полностью

подскажите строку регулярного выражения чтобы можно было так разбить входящий URL
на подстроки:

http://www.delphimaster.ru
/cgi-bin/
forum.pl
?n=3


 
clickmaker ©   (2009-12-09 11:52) [1]

а если будет www.dom3.dom2.dom1.ru?


 
RWolf ©   (2009-12-09 11:59) [2]

и да, символ подчёркивания в доменном имени недопустим.


 
ford ©   (2009-12-09 12:03) [3]


> и да, символ подчёркивания в доменном имени недопустим.

понятно что недопустим
впрос же не втом :)

второй день бьюсь и немогу составить строку выражения для того чтобы можно было нормально разбить URL на составляющие


 
Медвежонок Пятачок ©   (2009-12-09 12:03) [4]

проще всего поэтапно.
сначала отрезать начало включая //
затем сделать сплит по /
получим список.
те элементы списка, что содержат ? или & засплиттить еще раз


 
KilkennyCat ©   (2009-12-09 12:13) [5]

а мне от этих регулярных уже жутко. с мыльным седня всю ночь мучался, а потом подумал - ну и фигня все, скоро русскоязычные домены...


 
Медвежонок Пятачок ©   (2009-12-09 12:14) [6]

либо все за один присест одним сплиттом по выражению /|\?|&|//


 
ford ©   (2009-12-09 12:17) [7]

короче вот очередной велосипед :)
два дня потерял на этот TRegExpr
и за 20 минут сделал простую функцию

Procedure ParseUrl(srcurl:String; dst:TStrings);
Var st:String;

  function extract(src:String; divider:Char):string;
  var i:Integer;
  Begin
   i:=1; result:="";
   while src[i]<>divider do
    Begin
      result:=result+src[i];
      inc(i);
    End;
  End;
Begin
If SrcUrl<>"" Then
 Begin
  if pos("/",srcurl)>0 Then st:=Extract(SrcUrl,"/")
  Else
    if pos(".",srcurl)>0 Then st:=Extract(SrcUrl,".")
   Else
     if Pos("?",srcurl)>0 Then st:=Extract(srcUrl,"?")
     Else st:=SrcUrl;
 dst.Append(st);
 delete(srcUrl,1,Length(st)+1);
 ParseUrl(srcUrl,dst);
end;
End;


 
Медвежонок Пятачок ©   (2009-12-09 12:19) [8]

ну и зря


 
Медвежонок Пятачок ©   (2009-12-09 12:22) [9]

const URL = "http://www.delphimaster.ru/cgi-bin/forum.pl?n=3";

var cList : TStrings;
begin
cList := TStringList.Create;
SplitRegExpr("//|/|\?|&",URL,cList);
ShowMessage(cList.Text);
cList.Free;
end;


 
ford ©   (2009-12-09 12:26) [10]


> Медвежонок Пятачок ©   (09.12.09 12:22) [9]

мдя.... ну млин тоже можно :)
хтоб еще тока знал что там есть такой метод :)



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

Форум: "Прочее";
Текущий архив: 2010.02.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
2-1260997690
Aleks
2009-12-17 00:08
2010.02.14
как загрузить рисунок имеющий расширение .png в компонент Ima


15-1260341779
vajo
2009-12-09 09:56
2010.02.14
Помогите с Windows Photo Gallery


13-1124359065
Cherrex
2005-08-18 13:57
2010.02.14
Есть ли аналог компонентов Data Controls


15-1260309385
GanibalLector
2009-12-09 00:56
2010.02.14
PortMon


15-1260134838
Германн
2009-12-07 00:27
2010.02.14
Что в Си означает cout<<" n"?





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