← Back to team overview

sslug-teknik team mailing list archive

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