sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #101386
Re: Regexp spørgsmål
On 28-02-2011 15:06, Michael Rasmussen wrote:
> On Mon, 28 Feb 2011 15:01:03 +0100
> Asbjorn Grandt <asbjorn@xxxxxxxxxx> wrote:
>
>> Ikke helt, denne ignorerer ikke /../../
>> Jeg har prøvet med f.eks. /\/\w+\/\.\./ men hvis segmentet før /../
>> indeholder et . eller andet ikke-alfanumerisk tegn matcher den jo ikke.
>>
> #!/usr/bin/perl
>
> my $url = "/test/test.cgi/../../";
>
> $url =~ /^\/(.+?)\/\.\./;
>
> print "$1\n" if $1;
>
> exit;
>
> $ perl /tmp/test.pl
> test/test.cgi
>
> Det går da vist meget godt? Bemærk (.+?)
>
Det er bare ikke det jeg forventer.
Problemet er at jeg skal normalisere en relativ path der bliver sat
sammen mere eller mindre dynamisk. Dvs den kan se sådan ud:
"../test1/test.2/test.3/../test4"
Den normaliserede form af den er "../test1/test.2/test.4" da /test.3/../
reduceres ud.
/\/\w+\/\.\./ klarer fint at fange det segment der skal væk
(/test.3/../), så længe det havde været "test3", og ikke "test.3"
Jeg havde prøvet med /\/[^\.]{2}\/\.\.\/ men det virker heller ikke.
Mvh
Asbjørn
References