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.

  1. PCRE işlevleri şablonların ayırıcılar arasına alınmasını gerektirir.
  2. POSIX'in tersine, PCRE eklentisi harf büyüklüğüne duyarsız eşleşmeye adanmış işlevlere sahip değildir. Bunun yerine i (PCRE_CASELESS) ş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.
  3. 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.
  4. Bir "karakter sınıfının" POSIX tanımı, PCRE'ninkinden farklıdır. Bir dizi belirgin karakterle eşleşecek basit parantez ifadeleri, PCRE karakter sınıfları biçiminde desteklenir, ancak POSIX harmanlama öğeleri, karakter sınıfları ve karakter eşdeğerleri desteklenmez. PRE'ye :, . veya = karakterleri ile başlayıp biten bir karakter sınıfına sahip bir ifade sağlamak, bu desteklenmeyen özelliklerden birini kullanma girişimi olarak yorumlanır ve bir derleme hatasına neden olur.

İşlevlerdeki farklar
POSIX PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() preg_replace()
eregi() preg_match()
split() preg_split()
spliti() preg_split()
sql_regcase() No equivalent