Beschreibung | re_comp() kompiliert eine Zeichenkette in ein internes Format, das für einen Mustervergleich geeignet ist. re_exec vergleicht die Zeichenkette, auf die string zeigt, mit dem letzten regulären Ausdruck, der re_comp() übergeben wurde.
Wird re_comp() mit dem Wert 0 oder einem Nullzeiger aufgerufen, bleibt der aktuelle reguläre Ausdruck unverändert. Die Zeichenketten, die an re_comp() und an re_exec() übergeben werden, müssen mit dem NULL-Zeichen abgeschlossen werden. Die Zeichenketten können abschließende oder eingebettete Zeilenvorschubzeichen (NEWLINE) enthalten. re_comp() und re_exec() unterstützen einfache reguläre Ausdrücke. Die für den Mustervergleich geltenden Regeln sind im Folgenden beschrieben.
1. | Reguläre Ein-Zeichen-Ausdrücke passen nach folgenden Regeln zu einem Zeichen: | 1.1 | Ein gewöhnliches Zeichen (keines der unter 1.2 aufgeführten Sonderzeichen) ist ein regulärer Ausdruck, der zu sich selbst passt. | 1.2 | Ein Gegenschrägstrich (Backslash: \ )gefolgt von einem Sonderzeichen ist ein regulärer Ein-Zeichen-Ausdruck, der zu diesem Sonderzeichen passt. Definiert sind folgende Sonderzeichen: Punkt (.), Stern (*), öffnende eckige Klammer ([) und Gegenschrägstrich (\). Diese Zeichen sind Sonderzeichen, ausgenommen, sie stehen in eckigen Klammern [ ] (siehe 1.4). Circumflex (^) ist ein Sonderzeichen, wenn es am Anfang eines regulären Ausdrucks steht oder wenn es in eckigen Klammern steht und unmittelbar auf die öffnende Klammer folgt ( [^ ] ) (siehe 1.4). Dollar ($) ist ein Sonderzeichen, wenn es am Ende eines regulären Ausdrucks steht (siehe 3.2). Das Begrenzungszeichen, das verwendet wird, um einen regulären Ausdruck zu begrenzen (delimit), ist für diesen regulären Ausdruck ein Sonderzeichen.
| 1.3 | Ein Punkt (.) ist ein regulärer Ein-Zeichen-Ausdruck, der mit Ausnahme von NEWLINE zu allen Zeichen passt. | 1.4 | Eine nichtleere Zeichenkette, die in eckige Klammern eingeschlossen ist, ist ein regulärer Ein-Zeichen-Ausdruck, der zu jedem einzelnen Zeichen in dieser Zeichenkette passt. Ist allerdings das erste Zeichen in der Zeichenkette der Circumflex (^), passt der reguläre Ausdruck zu allen Zeichen mit Ausnahme der verbleibenden Zeichen in der Zeichenkette und NEWLINE. Das Zeichen ^ hat diese „Ausschlussbedeutung“ aber nur, wenn es das erste Zeichen nach der öffnenden eckigen Klammer ist. Das Minuszeichen (-) kann verwendet werden, um einen Bereich aufeinander folgender ASCII-Zeichen darzustellen, z.B. sind [0-9] und [0123456789] gleichbedeutend. Das Minuszeichen ist kein Sonderzeichen, wenn es das erste (evtl. nach einem ^) oder letzte Zeichen in der Zeichenkette ist. Die schließende eckige Klammer beendet eine solche Zeichenkette nicht, wenn sie das erste Zeichen (evtl. nach einem ^) in der Zeichenkette ist. Zum Beispiel passt [ ]a-f zu einer schließenden eckigen Klammer ] oder zu einem der Zeichen a, b, c, d, e oder f.Die vier Zeichen Punkt (.), Stern (*), öffnende eckige Klammer ([) und Gegenschrägstrich (\) stehen innerhalb einer solchen Zeichenkette für sich selbst. | 2 | Mit Hilfe der folgenden Regeln können reguläre Ausdrücke aus regulären Ein-Zeichen-Ausdrücken konstruiert werden: | 2.1 | Ein regulärer Ein-Zeichen-Ausdruck ist ein regulärer Ausdruck, der zu allem passt, was zu dem regulären Ein-Zeichen-Ausdruck passt. | 2.2 | Ein Stern (*), gefolgt von einem regulären Ein-Zeichen-Ausdruck, ist ein regulärer Ausdruck, der zu 0 oder mehreren Vorkommen des Ein-Zeichen-Ausdrucks passt. Falls es mehrere Möglichkeiten gibt, wird die längste, am weitesten links gelegene Teilkette gewählt, die passt. | 2.3 | Ein regulärer Ein-Zeichen-Ausdruck, gefolgt von \{m\}, \{m,\} oder \{m,n\} ist ein regulärer Ausdruck, der zu einem mehrfachen Vorkommen des Ein-Zeichen-Ausdrucks passt. m und n müssen nichtnegative Ganzzahlen kleiner 256 sein. {m\} passt zu genau m Vorkommen, \{m,\ passt zu mindestens m Vorkommen und \{m,n\} passt zu Vorkommen zwischen m und n (inklusive). Falls es mehrere Möglichkeiten gibt, wird die größte Zahl von Vorkommen gewählt, die passt. | 2.4 | Die Konkatenation von regulären Ausdrücken ist ein regulärer Ausdruck, der zu einer Zeichenkette passt, die durch Konkatenation derjenigen Zeichenketten entsteht, die zu den entsprechenden Komponenten des regulären Ausdrucks passen. | 2.5 | Ein regulärer Ausdruck, der zwischen den Zeichenfolgen \( und \) steht, passt zu allem, was zu dem zwischen diesen Zeichenfolgen stehenden regulären Ausdruck passt. | 2.6 | Der Ausdruck \n passt zu der gleichen Folge von Zeichen, die weiter vorne in demselben regulären Ausdruck zu einem zwischen \( und \) eingeschlossenem Ausdruck passte. n ist eine Ziffer; der betreffende Teilausdruck beginnt mit dem n-ten Vorkommen von \, gezählt wird von links. Zum Beispiel passt ^\(.\)\1$ zu einer Zeile, die aus einer Zeichenkette und ihrer Wiederholung besteht. | 3 | Zusätzlich kann ein regulärer Ausdruck so eingeschränkt werden, dass er nur zu einem Zeilenanfang, einem Zeilenende (oder beidem) passt: | 3.1 | Ein Circumflex (^) am Anfang eines vollständigen regulären Ausdrucks bedeutet, dass dieser Ausdruck nur zu einer Zeichenkette am Zeilenanfang passt. | 3.2 | Ein Dollarzeichen ($) am Ende eines vollständigen regulären Ausdrucks bedeutet, dass dieser Ausdruck nur zu einer Zeichenkette am Zeilenende passt. Zum Beispiel bedeutet ^vollständigerAusdruck$, dass der vollständige reguläre Ausdruck zu der gesamten Zeile passen muss. Der leere reguläre Ausdruck, d.h. //, ist äquivalent zu dem letzten aufgetretenen regulären Ausdruck. |
|