Specifiche RE2 per le mappe URL

Questa pagina descrive i requisiti e le limitazioni associati all'utilizzo della sintassi RE2 per le espressioni regolari nelle mappe URL.

RE2 presenta le seguenti limitazioni integrate:

  • RE2 non supporta asserzioni lookahead o lookbehind arbitrarie, né i riferimenti inversi. Nello specifico, i seguenti operatori di riferimento inverso non sono supportati:
    • (?=) - positive lookahead
    • (?!) - negative lookahead
    • (?<=) - positive lookbehind
    • (?<!) - negative lookbehind
    • \N: riferimento all'indietro in cui N è un numero intero
  • RE2 non riconosce \cx come carattere Control-X.
  • RE2 non riconosce gli operatori di raggruppamento atomico (?>...) e ++
  • RE2 non riconosce \C, \G o \X.
  • RE2 non riconosce i sottopattern condizionali (?(...)...), i commenti (?#...), i riferimenti ai pattern (?R) (?1) (?P>foo) o i callout C (?C...).

Oltre alle limitazioni RE2 descritte in precedenza, applichiamo ulteriori restrizioni alla sintassi delle espressioni regolari utilizzando la seguente lista consentita:

Stringa vuota e analoghi di stringhe vuote

Operatore Descrizione
^ All'inizio del testo o della riga (m=true)
$ Alla fine del testo (ad es. \z e non \Z) o della riga (m=true)
\A All'inizio del testo
\b Al limite della parola ASCII (\w da un lato e \W, \A o \z dall'altro)
\B Non al limite della parola ASCII
\g All'inizio del sottotesto in fase di ricerca
\G Al termine dell'ultima partita
\z Alla fine del testo

Ripetizioni

Operatore Descrizione
x* Zero o più x, preferibilmente di più
x+ Uno o più x, preferisci di più
x? Zero o uno x, preferibilmente uno
x{n,m} N o n+1 o ... o m x, preferibilmente di più
x{n,} N o più x, preferibilmente di più
x{n} Esattamente n x
x*? Zero o più x, preferibilmente meno
x+? Uno o più x, preferenza per un numero inferiore
x?? Zero o una x, preferisci zero
x{n,m}? N o n+1 o ... o m x, preferisci meno
x{n,}? N o più x, preferenza per meno
x{n}? Esattamente n x

Corrispondenza secondaria

Operatore Descrizione
(re) Gruppo di acquisizione numerato (sotto-corrispondenza)
(?P<name>re) Gruppo di acquisizione denominato e numerato (sotto-corrispondenza)
(?<name>re) Gruppo di acquisizione denominato e numerato (sottocorrispondenza)
(?:re) Gruppo non di acquisizione
(?flags) Imposta i flag all'interno del gruppo corrente; non acquisizione
(?flags:re) Impostare i flag durante la ricreazione; non acquisizione

Intervalli

Operatore Descrizione
[] Intervalli
\d Cifre (≡ [0-9])
\D Non cifre (≡ [^0-9])
\s Spazio vuoto (≡ [\t\n\f\r ])
\S Non spazio vuoto (≡ [^\t\n\f\r ])
\w Caratteri alfanumerici (≡ [0-9A-Za-z_])
\W Non caratteri alfanumerici (≡ [^0-9A-Za-z_])
[[:alnum:]] Alfanumerico (≡ [0-9A-Za-z])
[[:alpha:]] Alfabetico (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] Spazio vuoto (≡ [\t ])
[[:cntrl:]] Controllo (≡ [\x00-\x1F\x7F])
[[:digit:]] Cifre (≡ [0-9])
[[:lower:]] Minuscole (≡ [a-z])
[[:space:]] Spazio vuoto (≡ [\t\n\v\f\r ])
[[:upper:]] Maiuscole (≡ [A-Z])
[[:word:]] Caratteri alfanumerici (≡ [0-9A-Za-z_])
[[:xdigit:]] Cifra esadecimale (≡ [0-9A-Fa-f])

Caratteri consentiti negli intervalli

Intervallo di caratteri Descrizione
0-9, A-Z, a-z Alfanumerico
\x00-\x7F ASCII
0-9A-Fa-f Cifre esadecimali
\t\n\v\f\r Spazio vuoto
^ Negazione dell'intervallo
!"#$%&'()*+,\-.:;<=>?@[\\\]^_`{|}~ Altri personaggi