Главная страница
    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.46 MB
Время: 0.004 c
2-1260731941
Jaroslight
2009-12-13 22:19
2010.02.14
Заполнение ячеек первой строки таблицы датами текущего месяца


2-1260983201
S-C-L
2009-12-16 20:06
2010.02.14
Как в Delphi работать с операторами?


15-1259954884
oxffff
2009-12-04 22:28
2010.02.14
Спасибо.


1-1237879677
alolya
2009-03-24 10:27
2010.02.14
Проблема к компонентами на базе Rich


15-1260264866
Гипербореец
2009-12-08 12:34
2010.02.14
Аналог Application.ProcessMessages для С#





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