Normal ifadede karakter sınıfları tanımının nasıl çalıştığını yanlış anlamış görünüyorsunuz.
Dizeleri herhangi eşleştirmek için 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, veya 12, bu eserlerin gibi bir şey:
0[1-9]|1[0-2]
Referanslar
Açıklama
Bir karakter sınıfı, kendi başına, girdi dizesinden bir ve tam olarak bir karakterle eşleşmeye çalışır . [01-12]aslında tanımlar [012], 3 karakterlerden herhangi karşı girişten bir karakter eşleşen bir karakter sınıfını 0, 1ya 2.
-Aralık tanımı gider 1için 1sadece içeren, 1. Öte yandan, bir şey gibi [1-9]içerir 1, 2, 3, 4, 5, 6, 7, 8, 9.
Yeni başlayanlar genellikle benzer şeyleri tanımlarken hata yaparlar [this|that]. Bu "işe yaramıyor". Bu karakter tanımı tanımlar [this|a], bu 6 karakter herhangi birine karşı giriş bir karakter ile eşleşir, yani t, h, i, s, |ya da a. Muhtemelen (this|that)amaçlanan şeydir.
Referanslar
Aralıklar nasıl tanımlanır
Bu yüzden artık böyle bir modelin between [24-48] hours"işe yaramadığı" açık. Bu durumda karakter sınıfı eşdeğerdir [248].
Yani, -bir karakter sınıfı tanımında, modeldeki sayısal aralığı tanımlamaz. Normal ifade motorları, sonlu tekrar sözdizimi dışında (ör . a{3,5}3 ile 5 arasındaki eşleşmeler a) kalıptaki sayıları gerçekten "anlamaz" .
Aralık tanımı, aralıkları tanımlamak için karakterlerin ASCII / Unicode kodlamasını kullanır. Karakter 0ASCII'de 48 ondalık olarak kodlanmıştır; 957'dir. Dolayısıyla, karakter tanımı [0-9], kodlamada değerleri ondalık 48 ile 57 arasında olan tüm karakterleri içerir. Aksine makul, tasarım olarak bu karakterler 0, 1, ..., 9.
Ayrıca bakınız
Başka bir örnek: A'dan Z'ye
Başka bir ortak karakter sınıfı tanımına bir göz atalım [a-zA-Z]
ASCII'de:
A= 65, Z= 90
a= 97, z= 122
Bu şu demek:
[a-zA-Z]ve [A-Za-z]eşdeğerdir
- Çoğu tatta,
[a-Z]muhtemelen geçersiz bir karakter aralığıdır
- çünkü
a(97), Z(90) ' dan "büyüktür"
[A-z] yasaldır, ancak şu altı karakteri de içerir:
[(91), \(92), ](93), ^(94), _(95), `(96)
İlgili sorular
[a-z0-9], tüm küçük harflerle ve tüm rakamlarla eşleşir, ancak yalnızca tek bir karakter olarak.