Форум: "Прочее";
Текущий архив: 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.005 c