Toon posts:

[PERLRE] Hoe vind ik de laatste , in een string ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Nou ben ik de hele avond al een beetje aan het spelen met Regular Expressions en ik snap het ook wel aardig maar hier kom ik toch niet uit... hoewel ik aanneem dat het heel simpel is.

Stel je hebt een filename met meerder . puntjes er in. nu moet ik het laatste puntje vinden en daar iets inserten.
code:
1
2
3
4
5
6
7
8
$code=1;
$filemame = 'testfile.doc.txt.asci';
$filename =~ s/\./$counter\./;  # Zo dus de eerste
$filename =~ s/\./$counter\./g;  # Zo dus alle 
$filename =~ s/ ???? /$counter\./g;  # Hoe de laatste alleen ?

Out: 
testfile.doc.txt1.asci

Het is voor een file upload script zodat de file gerenamed word al hij al bestaat.

Uhm toch maar eens een boek kopen over RE :)

  • tomato
  • Registratie: November 1999
  • Niet online
code:
1
s/(.*)\./$1$counter\./

of
code:
1
s/\.([^.]*)$/$counter\.$1/

Zoiets?

Met een segenger zou dit waarschijnlijk nog wat sneller kunnen (hoewel, niet zoals in de link beschreven natuurlijk, maar wanneer right-to-left pattern matching native wordt in de perlre en ik dacht dat dat in perl 6 kwam :)), van de twee hierboven is zeer waarschijnlijk de bovenste het snelst.

Verwijderd

Topicstarter
Dank je... ik heb ze alle 2 getest en ze werken prima... Nu ben ik wel heel dicht bij de eerste oplossing geweest alleen het gebruik van die speciale variablen wist ik niet.