Spesifikasi RE2 untuk peta URL

Untuk mengonfigurasi peta URL dengan aturan perutean traffic yang menggunakan ekspresi reguler, Anda harus memahami persyaratan dan batasan sintaksis ekspresi reguler RE2.

RE2 memiliki batasan bawaan berikut:

  • RE2 tidak mendukung pernyataan lookahead atau lookbehind arbitrer, dan tidak mendukung referensi balik. Khususnya, operator referensi balik berikut tidak didukung:
    • (?=) - lookahead positif
    • (?!) - negative lookahead
    • (?<=) - positive lookbehind
    • (?<!) - negative lookbehind
    • \N- backreference dengan N adalah bilangan bulat
  • RE2 tidak mengenali \cx sebagai karakter Control-X.
  • RE2 tidak mengenali operator pengelompokan atomik (?>...) dan ++
  • RE2 tidak mengenali \C, \G, atau \X.
  • RE2 tidak mengenali subpola bersyarat (?(...)...), komentar (?#...), referensi pola (?R) (?1) (?P>foo), atau panggilan C (?C...).

Selain batasan RE2 yang dijelaskan sebelumnya, kami menerapkan batasan lebih lanjut pada sintaksis ekspresi reguler dengan menggunakan daftar yang diizinkan berikut:

String kosong dan analog string kosong

Operator Deskripsi
^ Di awal teks atau baris (m=true)
$ Di akhir teks (seperti \z, bukan \Z) atau baris (m=true)
\A Di awal teks
\b Di batas kata ASCII (\w di satu sisi dan \W, \A, atau \z di sisi lain)
\B Tidak pada batas kata ASCII
\g Di awal subteks yang sedang ditelusuri
\G Di akhir pertandingan terakhir
\z Di akhir teks

Pengulangan

Operator Deskripsi
x* Nol atau lebih x, lebih suka
x+ Satu atau lebih x, lebih suka lebih banyak
x? Nol atau satu x, lebih memilih satu
x{n,m} N atau n+1 atau ... atau m x, lebih disukai
x{n,} N atau lebih x, lebih suka
x{n} Tepat n x
x*? Nol atau lebih x, lebih sedikit lebih baik
x+? Satu atau beberapa x, lebih sedikit lebih baik
x?? Nol atau satu x, lebih memilih nol
x{n,m}? N atau n+1 atau ... atau m x, lebih sedikit lebih baik
x{n,}? N atau lebih x, lebih sedikit lebih baik
x{n}? Tepat n x

Subkecocokan

Operator Deskripsi
(re) Grup tangkapan bernomor (submatch)
(?P<name>re) Grup tangkapan bernama & bernomor (submatch)
(?<name>re) Grup tangkapan bernama & bernomor (submatch)
(?:re) Grup non-penangkapan
(?flags) Menetapkan flag dalam grup saat ini; tidak merekam
(?flags:re) Menetapkan tanda selama re; non-capturing

Rentang

Operator Deskripsi
[] Rentang
\d Digit (≡ [0-9])
\D Bukan digit (≡ [^0-9])
\s Spasi kosong (≡ [\t\n\f\r ])
\S Bukan spasi kosong (≡ [^\t\n\f\r ])
\w Karakter kata (≡ [0-9A-Za-z_])
\W Bukan karakter kata (≡ [^0-9A-Za-z_])
[[:alnum:]] Alfanumerik (≡ [0-9A-Za-z])
[[:alpha:]] Abjad (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] Kosong (≡ [\t ])
[[:cntrl:]] Kontrol (≡ [\x00-\x1F\x7F])
[[:digit:]] Digit (≡ [0-9])
[[:lower:]] Huruf kecil (≡ [a-z])
[[:space:]] Spasi kosong (≡ [\t\n\v\f\r ])
[[:upper:]] Huruf besar (≡ [A-Z])
[[:word:]] Karakter kata (≡ [0-9A-Za-z_])
[[:xdigit:]] Digit heksadesimal (≡ [0-9A-Fa-f])

Karakter yang diizinkan dalam rentang

Rentang karakter Deskripsi
0-9, A-Z, a-z Alfanumerik
\x00-\x7F ASCII
0-9A-Fa-f Digit heksadesimal
\t\n\v\f\r Spasi Putih
^ Negasi rentang
!"#$%&'()*+,\-.:;<=>?@[\\\]^_`{|}~ Karakter lainnya