RE2-Spezifikationen für URL-Zuordnungen

Wenn Sie URL-Zuordnungen mit Regeln für das Traffic-Routing konfigurieren möchten, die reguläre Ausdrücke verwenden, müssen Sie die Anforderungen und Einschränkungen der RE2-Syntax für reguläre Ausdrücke kennen.

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

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

Zusätzlich zu den oben beschriebenen Einschränkungen für RE2 gelten weitere Einschränkungen für die Syntax regulärer Ausdrücke, die durch die folgende Zulassungsliste definiert werden:

Leere Strings und Analoga von leeren Strings

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

Wiederholungen

Operator Beschreibung
x* Null oder mehr x, bevorzugt mehr
x+ Ein oder mehr x, bevorzugt mehr
x? Null oder ein x, bevorzugt eins
x{n,m} N oder n+1 oder ... oder m x, bevorzugt mehr
x{n,} N oder mehr x, bevorzugt mehr
x{n} Genau n x
x*? Null oder mehr x, bevorzugt weniger
x+? Ein oder mehr x, bevorzugt weniger
x?? Null oder ein x, bevorzugt null
x{n,m}? N oder n+1 oder ... oder m x, bevorzugt weniger
x{n,}? N oder mehr x, bevorzugt weniger
x{n}? Genau n x

Teiltreffer

Operator Beschreibung
(re) Nummerierte Erfassungsgruppe (Teiltreffer)
(?P<name>re) Benannte und nummerierte Erfassungsgruppe (Teiltreffer)
(?<name>re) Benannte und nummerierte Erfassungsgruppe (Teiltreffer)
(?:re) Nicht erfassende Gruppe
(?flags) Flags in der aktuellen Gruppe festlegen; nicht erfassend
(?flags:re) Flags während der regulären Ausdrücke festlegen; nicht erfassend

Bereiche

Operator Beschreibung
[] Bereiche
\d Ziffern (≡ [0-9])
\D Keine Ziffern (≡ [^0-9])
\s Leerzeichen (≡ [\t\n\f\r ])
\S Keine 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:]] Hexadezimale Ziffer (≡ [0-9A-Fa-f])

In Bereichen zulässige Zeichen

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