Neden PHP regexes çevreleyen sınırlayıcı var mı? Herhangi bir model modifiye kullanılmakta olursa olsun işlevi için bir parametre olarak geçirilen olsaydı daha net olacak gibi görünüyor.
Böyle olmak zorunda neden hiçbir teknik sebebi yok.
Yorumunuzda belirtildiği gibi, temel kütüphane bayrakları regexp parçası olarak kabul edilmesini gerektirmez - aslında, bu uzatma kapalı şerit ve ayrı bir argüman olarak onları geçmek zorundadır.
Orijinal uygulayıcısı onu bu araçlardan gelen programcılar için daha tanıdık böylece grep / sed / awk / perl / vb gibi görünmesi için çalışıyordu sanki görünür.
Sınırlayıcı nedeni desen sonra bayraklarını koymaktır. Muhtemelen bayraklar ayrı bir parametre (Java bu şekilde yapabilirsiniz) olarak geçmiş olması olabilir ama bu Perl aslında yaptım yolu (ve sed / awk / vi ondan önce) böylece şimdi nasıl yapıldığını bulunuyor.
Ileri kullanmayın bölü: onlar da ortak konum. Şahsen ben neredeyse her zaman kullanın! karakter. Ben hemen hemen hiç o arıyorum.
Ben gebelik fonksiyonların geliştiricilerin nedenleri ne olduğunu bilmiyorum. Aklıma tek nedeni şeyleri Perl şekilde yapmak çok zor biraz denedim olmasıdır.
Ayraçlar bayraklar ayrı bir parametre olarak bayraklarını belirterek, bir parametre olarak regex ile birlikte belirtilmiş olmasına izin verirken daha temiz. Yani her düzenli ifade kütüphanesi (bir dil özelliği olarak literal Regexes desteklemeyen dillerde) Biliyorum PHP'nin gebelik fonksiyonları dayalı PCRE kütüphanesi dahil, böyle yapar. Gebelik kod gerçekten de PCRE'nin geçirilebilir önce regex dize regex sınırlayıcılarınıda kaldırma sorun çukur gitmek vardır.