Spesifikasi RE2 untuk peta URL

Halaman ini menjelaskan persyaratan dan batasan yang terkait dengan penggunaan sintaksis RE2 untuk ekspresi reguler di peta URL.

RE2 memiliki batasan bawaan berikut:

  • RE2 tidak mendukung pernyataan lookahead atau lookbehind arbitrer, dan tidak mendukung backreference. 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 Pada batas kata ASCII (\w di satu sisi dan \W, \A, atau \z di sisi lainnya)
\B Tidak berada di 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 lebih banyak
x+ Satu atau lebih x, lebih baik 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 lebih 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

Subcocok

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