Behauptungen

Behauptungen erweitern den regulären Ausdruck so, dass er nur unter bestimmten Bedingungen zutrifft.

Eine Behauptung braucht kein Zeichen um zuzutreffen, diese ermittelt vielmehr die Umgebung einer eventuellen Übereinstimmung bevor dieser bestätigt wird. Die Behauptung Wortgrenze z. B. versucht nicht, ein nichtdruckbares Zeichen neben einem druckbaren Zeichen zu finden, sondern stellt fest, dass dort KEIN druckbares Zeichen ist. Das heißt, dass dieses z. B. auch am Ende einer Zeichenfolge zutrifft.

Einige Behauptungen haben ein Muster das gefunden werden muss, aber der zutreffende Teil des Suchtextes dieses Musters wird nicht Teil des Ergebnisses des gesamten regulären Ausdrucks.

Reguläre Ausdrücke wie hier beschrieben unterstützen die folgenden Behauptungen:

^ (Hochzeichen: Anfang der Zeichenfolge)

Trifft auf den Anfang des zu suchenden Textes zu.

Der Ausdruck ^Peter trifft auf Peter im Text Peter, hey! zu, aber nicht auf Hey, Peter!.

$ (Ende der Zeichenfolge)

Trifft auf das Ende des Suchtextes zu.

Der Ausdruck you\?$ trifft auf das letzte you in You didn‚t do that, did you? zu, aber nirgendwo in You didn‘t do that, right?.

\b (Wortgrenze)

Trifft zu, wenn ein druckbares Zeichen auf der einen Seite aber keines auf der anderen Seite ist.

Dieser Ausdruck dient zum Finden von Wortenden, wenn nach beiden Enden gesucht wird, zum Finden des ganzen (einzelnstehenden) Wortes. Der Ausdruck \bin\b trifft auf das einzelnstehende in in He came in through the window zu, aber nicht auf das in in window.

\B (keine Wortgrenze)

Trifft immer dort zu, wo \b nicht zutrifft.

Dieser Ausdruck dient zum Finden von Text innerhalb von Worten. Der Ausdruck \Bin\B trifft z. B. auf das in im Wort window im Text He came in through the window zu, aber nicht auf integer oder I'm in love.

(?=PATTERN) (Positive Vorwärtsreferenz)

Eine Vorwärtsreferenz prüft den Text, der dem eventuell zutreffenden Teil des Textes folgt. Die Vorwärtsreferenz verhindert, dass der Text zutrifft, wenn der nachfolgende Text nicht auf das MUSTER der Behauptung zutrifft. Wenn die Behauptung zutrifft, wird der Text, der auf diese zutrifft, allerdings nicht Bestandteil des Ergebnisses.

Der Ausdruck handy(?=\w) trifft auf handy in handyman zu, aber nicht auf das in That came in handy!

(?!PATTERN) (Negative Vorwärtsreferenz)

Eine negative Vorwärtsreferenz verhindert, dass der Text zutrifft, wenn der nachfolgende Text auf das MUSTER zutrifft.

Der Ausdruck const \w+\b(?!\s*&) trifft auf const char im Text const char* foo, aber nicht const QString in const QString& bar weil das & auf die negative Vorwärtsreferenz zutrifft.

(?=PATTERN) (Positive Rückwärtsreferenz)

Eine Rückwärtsreferenz hat die gleiche Wirkung wie eine Vorwärtsreferenz, funktioniert aber rückwärts. Eine Rückwärtsreferenz sucht den Teil der Zeichenfolge vor einer mögliche Übereinstimmung. Die positive Rückwärtsreferenz passt nur dann auf eine Zeichenfolge, wenn PATTERN der Behauptung vorangestellt ist, aber der damit übereinstimmende Text wird nicht in das Ergebnis aufgenommen.

Der Ausdruck (?<=cup)cake passt auf cake, wenn cup vorangestellt ist wie z. B. in cupcake aber nicht in cheesecake oder in nur cake.

(?!PATTERN) (Negative Rückwärtsreferenz)

Eine negative Rückwärtsreferenz verhindert, dass der Text zutrifft, wenn der vorherige Text auf das MUSTER zutrifft.

Der Ausdruck (?<![\w\.])[0-9]+ passt auf 123 in der Zeichenfolgen =123 und -123, aber nicht auf 123 in .123 oder word123.

(PATTERN) (Gruppierung)

Das Untermuster innerhalb der Klammern wird gespeichert und gemerkt, so dass es in Rückwärtsreferenzen verwendet werden kann. Der Ausdruck (&quot;+)[^&quot;]*\1 passt zum Beispiel auf """"text"""" und "text".

Weitere Informationen im Abschnitt Speichern von gefundenem Text (Rückwärtsreferenzen).

(?:PATTERN) (Nicht speichernde Gruppe)

Das Untermuster in den Klammern wird nicht gespeichert und gemerkt. Sie sollten immer nicht speichernde Gruppen zu verwenden, wenn die Speicherungen nicht verwendet werden.