Ek A. Düzenli İfadeler

Anders Lund

-: İşbaran Akçayır
-: Emir SARI
Bu Ek, düzenli ifadeler dünyasına kısa;
ancak umarım yeterli ve kapsamlı bir giriş içerir. Bu belgede,
KatePart içinde kullanılabilir olan düzenli ifadeler anlatılır.
Bu düzenli ifade biçimi, ne perl düzenli ifadeleriyle ne de
grep ile kullanılabilir düzenli ifadelerle
doğrudan uyumlu değildir.

Giriş

Düzenli İfadeler, bize bir metin dizisinin kimi olası içeriğini küçük bir yazılım parçası tarafından anlaşılacak şekilde tanımlamanın bir yolunu sağlar, böylece bir metnin eşleşip eşleşmediğini görebilir ve bazı gelişmiş durumlarda belirli parçaları veya eşleşen metni kaydedebiliriz.

Örnek: Bir metni, içinde Henrik veya Pernille adlarından biriyle başlayan ve sonrasında say gelen paragraflar için aramak istiyoruz.

Normal bir aramada, öncelikle adla aramaya başlardık; Henrik, belki sonrasında sa getirirdik: Henrik sa; eşleşmeleri ararken paragraf başı olmayan varyantları ve sa ile başlayan sözcükleri yok saymamız gerekirdi; örneğin says, said vb. Sonrasında bunların hepsini diğer adla da yinelememiz gerekecekti…

Düzenli İfadeler sayesinde bu görev tek bir aramayla ve daha büyük bir doğrulukla gerçekleştirilebilir.

Bunu başarmak için Düzenli İfadeler, eşleşecek bir dizinin genelleştirilmesini ayrıntılı olarak ifade etmeye yönelik kuralları tanımlar. Sözcüğü tam anlamıyla şu şekilde ifade edebiliriz: Ya Henrik ya da Pernille ile başlayan bir satır (büyük olasılıkla öncesinde bir sekme karakteri veya 4 adet boşluk olabilir), sonrasında bir boşluk ve sa ve sonrasında ya ys veya id şu düzenli ifadeyle gösterilebilirdi:

^[ \t]{0,4}(Henrik|Pernille) sa(ys|id)

Yukarıdaki örnek, çağdaş Düzenli İfadelerin dört ana konseptinin tümünü göstermektedir:

  • Dizgiler

  • Savlar

  • Niceleyiciler

  • Geriye başvurular

İfadeyi başlatan şapka (^) bir savdır ve yalnızca aşağıdaki eşleşen dizi bir satırın başındaysa doğrudur.

[ \t] ve (Henrik|Pernille) sa(ys|id) dizgilerdir. İlki, ya bir boş ya da (yatay) sekme karakteriyle eşleşen bir karakter sınıfıdır; diğer dizgi ise ya Henrik ya da Pernille ile eşleşen bir alt dizgi ve sa dizisiyle tam olarak eşleşen bir parçadır ve son olarak ya ys ya da id ile eşleşen bir alt dizgidir

{0,4} dizisi, öncekinin 0’dan 4’e kadar herhangi bir yer olan bir niceleyicidir.

Geriye başvurular kavramını destekleyen düzenli ifade yazılımı, dizinin eşleşen kısmının tümünü ve parantez içine alınmış alt dizgileri kaydettiği için bu başvurulara bazı erişim araçları verildiğinde, ya eşleşmenin tümünü (düzenli bir ifadeyle bir düzenleyicide bir metin belgesi aranırken, bu genellikle seçilmiş olarak işaretlenir) ya da bulunan ad ya da yüklemin son kısmını ele alabiliriz.

Tümü birlikte, ifade nerede eşleşmesini istiyorsak yalnızca orada eşleşir.

Aşağıdaki bölümlerde dizgilerin, karakter sınıflarının, savların, niceleyicilerin ve geriye başvuruların nasıl oluşturulacağı ve kullanılacağı ayrıntılı olarak açıklanacak ve son bölümde birkaç yararlı örnek verilecektir.