POSIX regex'ten farklılıklar
PHP 5.3.0'dan itibaren POSIX Regex
eklentisinin kullanımı önerilmemektedir.POSIX regex ile PCRE regex arasında
bazı farklar vardır. Bu sayada, PCRE'ye geçerken size gerekli olacak en
belirgin farklar listelenmiştir.
-
PCRE işlevleri şablonların
ayırıcılar arasına
alınmasını gerektirir.
-
POSIX'in tersine, PCRE eklentisi harf büyüklüğüne duyarsız eşleşmeye
adanmış işlevlere sahip değildir. Bunun yerine /i
şablon
değiştiricisi. kullanılır. Eşleşme stratejisini değiştirmek için
kullanılabilecek başka değiştiriciler de vardır.
-
POSIX işlevleri en soldaki en uzun eşleşmeyi bulurken PCRE ilk geçerli
eşleşmede durur. Eğer dizgenin tamamı eşleşmiyorsa bir fark ortaya çıkmaz
ama eşleşme durumunda eşleşme hızı ve sonuçlar bakımından kayda değer
farklar söz konusudur.
Bu farkları görebilmek için Jeffrey Friedl'ın "Mastering Regular
Expressions" adlı eserinden alımış örneğe bakalım.
oneselfsufficient dizgesinde one(self)?
(selfsufficient)? şablonunun PCRE ile kullanırsak eşleşme sonucu
oneself olacaktır. POSIX ile kullanıldığında ise, sonuç
dizgenin tamamı, yani oneselfsufficient olacaktır. Her
iki sonuç da özgün dizge ile eşleşmesine rağmen POSIX en uzun eşleşmeyi
gerektirir.