Klaus Mock: Regex Auswertung

Beitrag lesen

Hallo,

Was bringt hier /(.*?)/g; das ?. Das * sagt doch schon dass das davorstehende Zeichen 0-unendlich(65000 irgendwas) mal vorkommen kann,oder?

* ist gierig, d.h. es 'frißt' so viele Zeichen wie möglich. *? ist die nicht-gierige Variante, es 'frißt' gerade so viel, wie notwendig, um die Regex zu erfüllen.
In Deinem Falle würde * bei 'xx(suchtext)yy(suchtext2)zzzz' '(suchtext)yy(suchtext2)' als einzigen Treffer bringen, während *? zwei Treffer, nämlich '(suchtext)' und '(suchtext2)' bedeuten würde.

Näheres findest Du unter perldoc perlre.

Grüße
  Klaus