Thread Regulärer Ausdruck erst beim 2. mal: völlig unlogisch! (9 answers)
Opened by Gast at 2006-08-31 16:53

sid burn
 2006-09-03 20:28
#69474 #69474
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
@betterworld
Immer wenn man /g benutzt und ein Treffer war erfolgreich, dann wird die aktuelle Position beibehalten. War ein Treffer hingegen nicht erfolgreich wird die Position "sofort" wieder auf den Anfang zurück gesetzt. Auser man benutzt die Option /c, dann wird trotz fehltreffer die Startposition beibehalten. Ich dachte eigentlich so habe ich es auch geschrieben.

Code: (dl )
1
2
3
4
5
6
$_ = "Hallo!";
m/[A-Z]/g;
print pos, "\n";

m/[A-Z]/g;
print "Von vorne", "\n" if not defined pos;

Ausgabe:
Code: (dl )
1
2
1
Von vorne


Position 1 bedeutet vor dem "a". 0 würde vor dem "H" bedeuten. Und undef heißt die Position wurde resetet.

Wenn also das erste nicht matcht, ist es unmöglich das dass zweite matcht, da beide an der selben Stelle anfangen. Das zweite kann nur matchen wie du sagtest, wenn das erste gematcht hat.

Der Thread starter sagte aber das das erste nicht matcht, das zweite dann aber. Was aber eigentlich unmöglich ist.

Deswegen wollte ich ein Beispielstring haben wo dies der Fall ist, aber es kommt ja nichts mehr weiter.

Ich würde den Fall zu den X-Akten legen.\n\n

<!--EDIT|sid burn|1157301031-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Regulärer Ausdruck erst beim 2. mal: völlig unlogisch!