← Back to team overview

sslug-teknik team mailing list archive

Re: Regexp spørgsmål (LØST)

 

On 28-02-2011 17:51, Peter Makholm wrote:
> Asbjorn Grandt <asbjorn@xxxxxxxxxx> writes:
>
>> Nummer 2 var lige hvad de skulle til.
>> Og ja, hvis du har en path som "test1/test2/test4/../../test4" skal den
>> vist køres 2 gange.
> Hmmm, faktisk et stykke skod-kode. Pas på med at bruge det!
>
>> Jeg gentager den indtil der ikke er flere matches på den.
> Så tror jeg stadigvæk det har et problem med relative stier, som du ser
> ud til at arbejde med. foo/bar/../../../biz bliver reduceret til
> foo/biz.
>
> Øv.
>
> [... 10 minutter ...]
>
> Nu ser min linje 2 ud til at ende med
>
>   1 while $path =~ s{(^|/)(?!\.\./)[^/]+/\.\.(/|$)}{$1}g;
>
> Så begynder det pludselig at være temmelig upænt og jeg føler mig slet
> ikke tryk ved om det virker i alle niche-tilfælde.
>
> Jeg tror hellere jeg må begynde forefra...
>   
> //Makholm
>
>
Jeg har et andet stykke kode der splitter path strengen op ved at dele
på "/", og derefter traversere den, ser den en .. hopper den et trin
tilbage i listen.
Den kode virker 100% hver gang. Men den er også ca. 4 gange langsommere,
det var derfor jeg havde håbet at kunne have brugt Regexp på en sikker måde.

Stadig tak for hjælpen.

Venlig hilsen
Asbjørn


References