Hallo seth,
ich habe jetzt mal auf die Schnelle versucht den Begriff "assertion" grob zu definieren. [...]
aeh, wirst du das in etwa so auch in deinem buch machen wollen? das wuerde afais jeden neuling komplett verwirren oder auf den falschen weg bringen, weil es die sache imho unnoetig verkompliziert.
Ich weiß noch nicht wie ich mit dem Begriff "assertion" umgehen werde, ich muss das erst einmal sacken lassen. Aber du hast vollkommen recht, diese sehr theoretische, sehr abstrakte Beschreibung wäre kontraproduktiv und ist in dieser Form nicht für den Leser gedacht und nicht geeignet.
Ich kann vermutlich durchaus auf den Begriff "assertion" verzichten und eben nur erwähnen und kurz erklären wie er üblicherweise verwendet wird.
Für einen Teil, also einen Bestandteil, eines Muster verwende ich den Begriff Musterelement (du erinnerst dich, vorher der Begriff Teilmuster, den ich auf deinen Rat hin hab fallen lassen). Auf "Musterelement" kann ich diese "assertion"-Sichtweise auch anwenden, was ich im Prinzip auch bisher schon getan habe.
1. wahr oder falsch
2. Richtung
3. Anzahl, der zu fressenden Zeichen
Diese Sichtweise als solche scheint mir für das Verständnis, wie ein Muster dann tatsächlich abgearbeitet wird, sehr hilfreich. Oder spricht da etwas dagegen?
Das Syntaxelement »\d« ist eine »one-width look ahead assertion«
aber warum willst du ueberhaupt "one-width look ahead assertions" einfuehren?
Ich bin da nicht fixiert drauf, zumal ich keine Texte kenne, die diesen Begriff explizit und begründend unterstützen, er ist vermutlich wirklich einfach überflüssig. Ich könnte also hingehen und unter dem Begriff "assertion", wie es ja nun einmal verbreitet ist, "zero-width"-Syntaxelemente subsumieren. Das einzige was mich daran stört, und sogar richtig nervt, ist dann diese Tautologie bei Wendungen wie "zero-width ... assertion".
Das Muster »(?=(a{2}))\1« ist eine »zero-width look ahead assertion«, gefolgt von einer »two-width look ahead assertion«, zusammen gesehen, handelt es sich um eine »two-width look ahead assertion«
das wuerde mich als neuling endgueltig verwirren.
Das war eine, ein wenig scherzhafte, Zuspitzung :-)
es erweckt dann zudem den eindruck, dass es dasselbe waere wie "(a{2})". ist es aber nicht, es ist "(?>(a{2}))".
Moment, stehe ich jetzt auf dem Schlauch, es ist doch dasselbe wie »(a{2})«?
Gilt nicht? »(?=(a{2}))\1« = »(?>(a{2}))« = »(a{2})«
Wobei die "atomic group" hier "inhaltlich" eigentlich nicht angebracht ist. Das Wesen einer "atomic group" kommt ja nur zum Ausdruck, wenn der Quantifier variabel ist.
ich haette es so formuliert:
(?=(a{2}))\1 ist hinterhaeltiges pattern.
Genau- das trifft es :-)
Gruß Uwe