RE2-Spezifikationen für URL-Zuordnungen

Auf dieser Seite werden die Anforderungen und Einschränkungen beschrieben, die mit der Verwendung der RE2-Syntax für reguläre Ausdrücke in Ihren URL-Zuordnungen verbunden sind.

Für RE2 gelten die folgenden integrierten Einschränkungen:

  • RE2 unterstützt keine beliebigen Lookahead- oder Lookbehind-Assertionen und auch keine Rückverweise. Insbesondere werden die folgenden Rückbezugsoperatoren nicht unterstützt:
    • (?=) – positiver Lookahead
    • (?!) – negativer Lookahead
    • (?<=) – Positive Lookbehind
    • (?<!) – Negative Lookbehind-Assertion
    • \N: Rückverweis, wobei N eine Ganzzahl ist
  • RE2 erkennt \cx nicht als Control-X-Zeichen.
  • RE2 erkennt die Operatoren für atomare Gruppierung (?>...) und ++ nicht.
  • RE2 erkennt \C, \G oder \X nicht.
  • RE2 erkennt keine bedingten Untermuster (?(...)...), Kommentare (?#...), Musterverweise (?R) (?1) (?P>foo) oder C-Callouts (?C...).

Zusätzlich zu den zuvor beschriebenen RE2-Einschränkungen wenden wir weitere Einschränkungen für die Syntax regulärer Ausdrücke an, indem wir die folgende Zulassungsliste verwenden:

  • Operatoren mit nur einem Zeichen sind zulässig
  • Gruppen dürfen nur submatch-Operatoren enthalten.
  • Gruppen sind nur ohne Wiederholungen zulässig
  • Die Wiederholung von Zeichen ist nur in einem einzelnen regulären Ausdruck zusammen mit Folgendem zulässig:
  • Bereiche dürfen nur Folgendes enthalten:

Leerer String und Analoga von leeren Strings

Operator Beschreibung
^ Am Anfang des Textes oder der Zeile (m=true)
$ Am Ende des Texts (z. B. \z, nicht \Z) oder der Zeile (m=true)
\A Am Anfang des Textes
\b An der ASCII-Wortgrenze (\w auf einer Seite und \W, \A oder \z auf der anderen Seite)
\B Nicht an einer ASCII-Wortgrenze
\g Am Anfang des gesuchten Untertexts
\G Am Ende des letzten Spiels
\z Am Ende des Textes

Wiederholungen

Operator Beschreibung
x* Null oder mehr x, vorzugsweise mehr
x+ Mindestens ein „x“, vorzugsweise mehr
x? Null oder ein „x“, vorzugsweise eins
x{n,m} N oder n+1 oder … oder m ×, vorzugsweise mehr
x{n,} N oder mehr x, bevorzugt mehr
x{n} Genau n x
x*? Null oder mehr x, weniger bevorzugt
x+? Ein oder mehrere x, möglichst wenige
x?? Null oder ein x, vorzugsweise null
x{n,m}? N oder n+1 oder … oder m x, vorzugsweise weniger
x{n,}? N oder mehr x, weniger bevorzugt
x{n}? Genau n x

Teilübereinstimmung

Operator Beschreibung
(re) Nummerierte Erfassungsgruppe (Teilausdruck)
(?P<name>re) Benannte und nummerierte Erfassungsgruppe (Teilübereinstimmung)
(?<name>re) Benannte und nummerierte Erfassungsgruppe (Teilübereinstimmung)
(?:re) Gruppe ohne Erfassung
(?flags) Flags innerhalb der aktuellen Gruppe festlegen; nicht erfassend
(?flags:re) Flags während des regulären Ausdrucks festlegen; nicht erfassen

Bereiche

Operator Beschreibung
[] Bereiche
\d Ziffern (≡ [0-9])
\D Keine Ziffern (≡ [^0-9])
\s Leerzeichen (≡ [\t\n\f\r ])
\S Kein Leerzeichen (≡ [^\t\n\f\r ])
\w Wortzeichen (≡ [0-9A-Za-z_])
\W Keine Wortzeichen (≡ [^0-9A-Za-z_])
[[:alnum:]] Alphanumerisch (≡ [0-9A-Za-z])
[[:alpha:]] Alphabetisch (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] Leerzeichen (≡ [\t ])
[[:cntrl:]] Steuerzeichen (≡ [\x00-\x1F\x7F])
[[:digit:]] Ziffern (≡ [0-9])
[[:lower:]] Kleinbuchstaben (≡ [a–z])
[[:space:]] Leerzeichen (≡ [\t\n\v\f\r ])
[[:upper:]] Großbuchstaben (≡ [A–Z])
[[:word:]] Wortzeichen (≡ [0-9A-Za-z_])
[[:xdigit:]] Hexadezimalziffer (≡ [0-9A-Fa-f])

Zulässige Zeichen in Bereichen

Zeichenbereich Beschreibung
0-9, A-Z, a-z Alphanumerisch
\x00-\x7F ASCII
0-9A-Fa-f Hexadezimalziffern
\t\n\v\f\r Leerraum
^ Bereichsnegation
!"#$%&'()*+,\-.:;<=>?@[\\\]^_`{|}~ Andere Zeichen