regex engine

  1. regex ifadelerini parse eder ve match işleminin davranışını belirler .

    bir regex engine in nasıl çalıştığını bilmek önemlidir. bu efektif regex ifadeleri oluşlurmayı ve regex leri daha isabetli yazmayı sağlar. bu da tabir yerindeyse daha az kafa patlatmayı ve daha az zaman harcamayı getirir.

    iki tip regex engine vardır. text-directed (metin bazlı) ve regex-directed (regex bazlı).

    popüler olanı 2.si yani regex-directed engine lardır. çünkü referanslar ve tembel davranış biçimi gibi bir takım kullanışlı özellikleri vardır. text-directed çalışan çok az engine vardır. bunlardan biri mysql dir, belki de en hatırı sayılır örnek olarak..

    regex-directed engine ların en ayırtedici özelliği solu tercih etmesidir. örneğin evim ifadesi evim|evim. ifadesindeki kelimelerden ikisi ile de eşleşecektir ama en baştaki evim kelimesine öncelik verecektir. text-directed engine ise sağdakini önce iletecektir.

    regex ilk olarak metin içerisindeki ilk karakteri dener. tüm permütasyonları denedikten sonra, ilk karakterle eşleşemezse ikinci karakteri ve bu şekilde sonraki karakterlerle devam eder.

    örneğin reg ifadesi "kara" olsun. argüman olarakta "bugün kar ankara'ya yağmadı" cümlesini ele alalım. ilk olarak kara kelimesinin ilk harfi k, cümlenin ilk harfi b ile eşleşmeye çalışacaktır. eşleşmediği için regex devam edecektir. taki k ile kar kelimesindeki ilk k eşleşene kadar.. regex k yı bulduktan sonra, burada duraklayıp kara kelimesinin diğer harflerini de eşleştirmeye çalışacaktır. k, a, r ile eşleştikten sonra a ile eşleşemeyince devam edecektir ve tekrar k harfini aramaya devam edecektir. taki ankara kelimesindeki k harfini yakalayıncaya kadar. daha sonra kara kelimesindeki diğer harfleri de eşleştirecek ve orada bekleyecektir. çünkü regex bir sonuç bulduğunda onu hemen iletmek ister.

    örnekteki regex ifadesi basit bir literal den ibaret olabilir fakat regex lerin nasıl çalıştığını anlamak açısından yeterlidir.
    shan,03.11.2009 02:13,#716