Torbjørn Skrevet 11. mars 2005 Rapporter Del Skrevet 11. mars 2005 (endret) som "Torbjørn the hacker" kan jeg ikke la et spørsmål forbli ubesvart. ang. din stengte tråd, dette står i perldoc perlre: By default, a quantified subpattern is "greedy", that is, it will match as many times as possible (given a particular starting location) while still allowing the rest of the pattern to match. If you want it to match the minimum number of times possible, follow the quantifier with a "?". Note that the meanings don't change, just the "greediness": *? Match 0 or more times +? Match 1 or more times ?? Match 0 or 1 time {n}? Match exactly n times {n,}? Match at least n times {n,m}? Match at least n but not more than m times jeg sitter i skrivende stund og prøver å demonstrere forskjellen på ? og ?? og om det finnes logiske eksempler på hvor dette er nyttig. EDIT: en demo: perl -wle 'for (@ARGV) { print "$_: ", /<(.?)>/, " ", /<(.??)>/ }' '<>' '<f>' '<bar>' '<>>' siste uttrykk, '<>>', matches forskjellig med ?? og ? Endret 11. mars 2005 av Torbjørn Lenke til kommentar
sam2 Skrevet 12. mars 2005 Rapporter Del Skrevet 12. mars 2005 Takk Torbjørn. Vært en stund siden noe perl kode hadde vært trykket..utrolig hvor fort en blir rusten.. Stusset litt over: my $v = "stopp"; my ($w) = $v =~m-(.??topp)-; #Gir "stopp", ikke "topp".. Siden ?? er knyttet til . (vilkårlig tegn) og siden ?? er NON-GREEDY, så kunne en kanskje tro at s'en, dvs første tegn i "stopp", ikke ville bli tatt med? Dersom en derimot benytter ?? i slutten av string, så får en forventet resultat: my $v = "stopp"; my ($w) = $v=~m-(stopp??)-; #Gir "stop". Antagligvis en kortslutning i tankegangen her et sted? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå