Gå til innhold

Anbefalte innlegg

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 av Torbjørn
Lenke til kommentar
Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...