Reguläre Ausdrücke oder Regex oder regexp oder manchmal auch als rationale Ausdrücke bezeichnet sind: String = string() RegExp = string() | regexp() MatchRes = “Match, Start, Länge” | nomatch | Fehler, Fehler Start = Länge = ganzzahlig() >= 1 Fehler = errordesc() RegExp = string() ParseRes = `ok, RE` | Fehler, Fehler RE = regexp() Error = errordesc() Der erste Regex sucht nach allen Ungültigen und das zweite sucht nach wiederholten Zeichen String = string() RegExp = string() | regexp() Neu = NewString = string() SubRes = `ok, NewString, RepCount` | Fehler, Fehler RepCount = 0 | 1 Error = errordesc() Dies ist am einfachsten mit zwei Regex-Prüfungen zu tun, eine für die Gültigkeit aller Buchstaben und eine andere, um nach doppelten Buchstaben zu suchen. . . . Wenn eine Übereinstimmung erfolgreich ist, wird der Name des zuletzt gefundenen (*MARK:NAME), (*PRUNE:NAME) oder (*THEN:NAME) auf dem übereinstimmenden Pfad an den Aufrufer zurückübergaben, wie im Abschnitt “Extra-Daten für pcre_exec()” in der pcreapi-Dokumentation beschrieben. Hier ist ein Beispiel für die pcretest-Ausgabe, bei der der /K-Modifikator den Abruf und die Ausgabe von (*MARK)-Daten anfordert: Die anderen Backtracking-Verben werden nicht speziell behandelt, wenn sie in einer eigenständigen positiven Assertion angezeigt werden. In einer bedingten positiven Assertion bewirkt die Rückverfolgung (aus der Assertion heraus) in (*COMMIT), (*SKIP) oder (*PRUNE), dass die Bedingung falsch ist. Bei eigenständigen und bedingten negativen Behauptungen bewirkt jedoch das Rückverfolgen in (*COMMIT), (*SKIP) oder (*PRUNE), dass die Assertion wahr ist, ohne weitere alternative Verzweigungen in Betracht zu ziehen. . . (*ACCEPT) ist das einzige Backtracking-Verb, das quantifiziert werden darf, da eine gierige Quantifizierung mit einem Minimum von Null nur wirkt, wenn ein Backtrack auftritt. Betrachten Sie z. B.: Wenn Sie die besondere Bedeutung aus einer Folge von Zeichen entfernen möchten, können Sie dies tun, indem Sie sie zwischen Q und E setzen.

Dies unterscheidet sich von Perl dadurch, dass in PCRE als Literale in den Sequenzen von “Q…”” behandelt werden, während in Perl, , und – die variable Interpolation verursachen. Beachten Sie die folgenden Beispiele: Diese Einrichtungen werden bereitgestellt, um ausgelaufene Übereinstimmungen zu fangen, die durch Muster mit riesigen passenden Bäumen provoziert werden. Ein häufiges Beispiel ist ein Muster mit geschachtelten unbegrenzten Wiederholungen, die auf eine lange Zeichenfolge angewendet werden, die nicht übereinstimmt. Wenn eine dieser Grenzwerte erreicht ist, gibt pcre2_match() eine Fehlerrückgabe aus. Die Grenzen können auch durch Elemente am Anfang des Musters des Formulars eingestellt werden, das Analytica verwendet, die Perl Compatible Regular Expression Library, geschrieben von Philip Hazel (E-Mail: ph10 at cam.ac.uk) der University of Cambridge Computing Service, Cambridge, England. Copyright (c) 1997-2008 University of Cambridge Alle Rechte vorbehalten. Das Dollarzeichen ist eine Assertion, die nur dann wahr ist, wenn sich der aktuelle Abgleichspunkt am Ende der Betreffzeichenfolge oder unmittelbar vor einer Zeilenumzlinie am Ende der Zeichenfolge befindet (standardmäßig), es sei denn, PCRE2_NOTEOL festgelegt ist. Beachten Sie jedoch, dass sie nicht mit der Newline übereinstimmt. Dollar muss nicht das letzte Zeichen des Musters sein, wenn eine Reihe von Alternativen beteiligt sind, aber es sollte das letzte Element in jedem Zweig sein, in dem es angezeigt wird. Dollar hat in einer Zeichenklasse keine besondere Bedeutung. Eine andere Möglichkeit, wie PCRE2 und Perl sich in ihrer Rekursionsverarbeitung unterschieden, ist die Handhabung erfasster Werte. Früher in Perl, als eine Gruppe rekursiv oder als Unterroutine aufgerufen wurde (siehe nächster Abschnitt), hatte sie keinen Zugriff auf Werte, die außerhalb der Rekursion erfasst wurden, während in PCRE2 auf diese Werte verwiesen werden kann.