REGEX – Karakter Sınıfları

Cumartesi, 05 Eyl 2009 yorum ekle yorumlara git
X

Okuduğunuz yazı, Düzenli İfadeler (Regular Expressions) adlı yazıdizisinin parçasıdır. Eğer giriş yazısını hala okumadıysanız şimdi okuyun, aksi takdirde "Ben neresiyim? Burası kim?" gibi manası bol fakat anlaşılması güç cümleler kurabilirsiniz.

Bu yazı dizisine ait tüm yazılar

Diyelimki bir yazı içerisinde geçen “makina” kelimelerini bulmak istiyorsunuz. Fakat bildiğiniz üzere makina kelimesini makine diye yazanlar da var, makina diye yazanlar da.

[...] yapısı, REGEX‘te karakter sınıfı olarak bilinir. e sadece e’leri, a sadece a’ları bulurken, [ea] her ikisini de bulur. Yazının içerisinde geçen makina ve makine kelimelerini bulmak için makin[ae] düzenli ifadesini kullanıyoruz. Bu düzenli ifade sayesinde yazı içerisinde ardından a veya e gelen makin kelimelerini buluyoruz.

Verilebilecek başka bir örnek ise istenilen yerlerde büyük-küçük harfe izin verilmesi durumlarıdır. Örneğin yazının içerisinde geçen hüseyin ve Hüseyin kelimelerini bulmak istediğinizde [Hh]üseyin regex‘ini kullanabilirsiniz. (Bu durum sizi korkutmasın, günümüzde pek çok Regex implementasyonunda büyük-küçük harf ayrımı gözardı edilebilmekte, ileriki yazılarda göreceğiz.)

Herhangi bir karakter sınıfının içerisinde istediğiniz kadar karakter kullanabilirsiniz. Mesela bir HTML belgesi içerisindeki tüm Header elementlerini bulmak istersek kullanmamız gereken regex; <h[123456]> Böylelikle html belgesi içerisinde geçen tüm <h1>, <h2> … <h6> elementlerini bulabiliriz.

Karakter sınıflarının içerisinde kullanabileceğiniz bir de - (tire) metakarakteri vardır. Bunun sayesinde karakter sınıfının içerisinde bir karakter aralığı oluşturabilirsiniz. Yani yukarıdaki örneği şu şekilde düzenleyebiilriz; <h[1-6]>

Karakter aralığına örnek olarak [0-9] tüm rakamları, [a-z] İngiliz alfabesindeki tüm küçük harfleri, [A-Z] İngiliz alfabesindeki tüm büyük harfleri belirtir. Sadece bunlarla sınırlı değilsiniz. [a-t] a ile t arasındaki tüm harfleri (a ve t dahil) , [A-z] A ile z arasındaki tüm karakterleri verir (Siz gene de bu son örneği kullanırken dikkatli davranın, ASCII karakter tablosunda Z ile a arasında [ ^ gibi bazı karakterler daha vardır, bunlar da karakter sınıfına dahil olur.). Bir karakter sınıfının içerisinde birden fazla karakter aralığı kullanabilirsiniz. Mesela [a-zA-Z] İngiliz alfabesindeki tüm büyük ve küçük harfleri belirtir. Kullanılan sırlamanın bir önemi yoktur.

Tire işaretinin yalnızca karakter sınıfının içerisinde olduğu zaman metakarakter olduğuna dikkat edelim. Karakter sınıfı dışarısında olduğunda ise normal olarak yazı içerisindeki tire işaretini bulursunuz.

Şimdilik bu kadar.


Paylaş:
  • Facebook
  • FriendFeed
  • Twitter
  • del.icio.us
  • Digg
  • StumbleUpon
  • Technorati
  • LinkedIn
  • MySpace
  • BlinkList
  • Reddit
  • RSS
  • email
  • PDF

Benzer Yazılar (bunları bilgisayar seçiyor);

Categories: Programlama, Regular Expressions 3.176 Gösterim