Anda sepertinya salah paham tentang cara kerja definisi kelas karakter di regex.
Untuk cocok dengan string 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, atau 12, seperti karya-karya ini:
0[1-9]|1[0-2]
Referensi
Penjelasan
Kelas karakter, dengan sendirinya, mencoba mencocokkan satu dan tepat satu karakter dari string input. [01-12]benar-benar mendefinisikan [012], kelas karakter yang cocok dengan satu karakter dari input terhadap salah satu dari 3 karakter 0, 1atau 2.
The -Definisi kisaran pergi dari 1ke 1, yang mencakup hanya 1. Di sisi lain, sesuatu seperti [1-9]meliputi 1, 2, 3, 4, 5, 6, 7, 8, 9.
Para pemula sering membuat kesalahan dalam mendefinisikan hal-hal seperti [this|that]. Ini tidak "berhasil". Karakter ini mendefinisikan definisi [this|a], yaitu cocok satu karakter dari input terhadap setiap 6 karakter di t, h, i, s, |atau a. Kemungkinan besar (this|that)itulah yang dimaksudkan.
Referensi
Bagaimana rentang ditentukan
Jadi sekarang jelas bahwa pola suka between [24-48] hourstidak "berhasil". Kelas karakter dalam kasus ini sama dengan [248].
Artinya, -dalam definisi kelas karakter tidak mendefinisikan rentang numerik dalam pola. Mesin regex tidak benar-benar "memahami" angka dalam pola, dengan pengecualian sintaks pengulangan hingga (misalnya, a{3,5}cocok antara 3 dan 5 a).
Definisi rentang malah menggunakan pengkodean karakter ASCII / Unicode untuk menentukan rentang. Karakter 0dikodekan dalam ASCII sebagai desimal 48; 9adalah 57. Jadi, definisi karakter [0-9]mencakup semua karakter yang nilainya antara desimal 48 dan 57 dalam pengkodean. Sebaliknya bijaksana, dengan desain ini adalah karakter 0, 1..., 9.
Lihat juga
Contoh lain: A sampai Z
Mari kita lihat definisi kelas karakter umum lainnya [a-zA-Z]
Di ASCII:
A= 65, Z= 90
a= 97, z= 122
Artinya:
[a-zA-Z]dan [A-Za-z]setara
- Dalam kebanyakan rasa,
[a-Z]kemungkinan merupakan rentang karakter ilegal
- karena
a(97) "lebih besar dari" dari Z(90)
[A-z] legal, tetapi juga mencakup enam karakter berikut:
[(91), \(92), ](93), ^(94), _(95), `(96)
Pertanyaan-pertanyaan Terkait
[a-z0-9]cocok dengan semua huruf kecil, dan semua angka, tetapi hanya sebagai satu karakter.