PHP 7.1.12 Released

Alt Şablonlar

Alt şablonlar yaylı ayraçlarla sınırlanır ve iç içe olabilirler. Bir şablonun bir alt parçası iki şekilde kendini gösterir:

1. Bir olasılık kümesinden oluşabilir. Örneğin, gel(enek|incik|) şablonu "gel", "gelenek" ve "gelincik" sözcüklerinden biriyle eşleşecektir. Yaylı ayraçlar olmasaydı "gelenek", "incik" ve boş bir dizge ile eşleşirdi.

2. Şablon grupları olarak görünebilir (aşağıya bakınız). Şablonun tamamı eşleştiğinde, eşleşmeye konu dizgenin alt şablonla eşleşen parçası pcre_exec() işlevinin ovector değiştirgesi üzerinden çağrıcıya aktarılır. Yakalayan alt şablon sayısını tutturmak için grup açılışları soldan sağa doğru sayılır (ilk grup 1 olmak üzere).

Örneğin, "the red king" dizgesini the ((red|white) (king|queen)) şablonuyla eşleştirmek istersek "red king", "red" ve "king" dizgeleri 1, 2 ve 3 olarak numaralanacaktır.

Aslında, salt yaylı ayraçları kullanarak bu iki işlevi yerine getirmek her zaman yararlı olmaz. Çoğu zaman bir gruplama alt şablonu bir yakalama gereksinimi olmaksızın kullanılır. Eğer açan yaylı ayracı takiben bir "?:" dizilimi varsa bu alt şablon herhangi bir yakalama yapmaz ve ardından gelen diğer yakalayan alt şablonların sayısında hesaba katılmaz. Örneğin, "the white queen" dizgesini the ((?:red|white) (king|queen)) şablonu ile eşleştirmek istersek "white queen" ve "queen" alt dizgeleri 1 ve 2 olarak numaralanır. Yakalayan alt şablonların azami sayısı 99, yakalayan ve yakalamayan alt şablonların azami sayısı ise 200'dür.

Uygun bir kısaltma olarak, yakalamayan bir alt şablonun başlangıcında bir seçenek ayarı gerekliyse seçenek harfleri "?" ile ":" arasına konabilir. Dolayısıyla,

       (?i:saturday|sunday)
       (?:(?i)saturday|sunday)
    

şablonlarının ikisi de aynı dizgeyle eşleşecektir. Olasılıklar soldan sağa değerlendirildiğinden ve seçenekler alt şablonun sonuna ulaşılıncaya kadar sıfırlanmayacağından tek bir olasılık dahilindeki bir seçenek ayarı sonraki olasılıkları da etkileyecektir, dolayısıyla yukarıdaki şablonlar "Saturday" ve hatta "SUNDAY" ile de eşleşecektir.

PHP 4.3.3'ten beri bir alt şablonu (?P<ad>şablon) ile isimlendirmek mümkündür. Eşleşmeleri içeren dizi, numaralarına göre indislenmiş eşleşmelerin yanısıra dizgelerine göre indislenmiş eşleşmeleri de içerecektir.

add a note add a note

User Contributed Notes 1 note

up
2
mike at eastghost dot com
2 years ago
(?:(?!string).)

?: makes a subpattern

?! is a negative look-ahead.

Putting negative look-ahead before the dot causes regex engine to first find any occurrence of the negative look-ahead string, and only then, if the negative look-ahead string is not present, should an arbitrary character (due to the dot) match.
To Top