Geriye Gönderimler
Bir karakter sınıfının dışında, bir tersbölü ile öncelenmiş 0'dan büyük
bir sayı, şablonda kendinden önce yaylı ayraçlarla gruplanmış alt
şablonlar varsa, bunlar arasından kendisiyle ilgili yakalayan alt
şablona gönderim olarak ele alınır.
Ancak, tersbölüyü takibeden onluk sayı 10'dan küçükse, bu daima bir
geriye gönderim olarak ele alınır ve şablonun öncesinde bir yakalayan
alt şablon başlatan bundan daha az sayıda yaylı ayraç varsa işlem bir
hata ile sonuçlanır. Başka bir deyişle, 10'dan küçük numaralı yakalayan
alt şablonları kapatan ayraçların kendileriyle ilgili geriye
gönderimlerin öncesinde bulunma koşulu yoktur. Tersbölüyü takibeden
rakamların ele alınışları ile ilgili ayrıntılı bilgiyi
önceleme karakteri bölümünde
bulabilirsiniz.
Bir geriye gönderimin eşleştiği alt şablon olasılıklar içeriyorsa,
geriye gönderim, şablonun kalanının eşleştiği olasılıktan başka bir
olasılıkla eşleşmez. Yani,
(sens|respons)e and \1ibility
şablonu, "sense and
sensibility" ve "response and responsibility" ile eşleştiği halde
"sense and responsibility" ile eşleşmeyecektir. Harf büyüklüğüne
duyarlılık etkin olduğunda geriye gönderim de aynı duyarlılığa sahip
olacaktır. Örneğin, ((?i)rah)\s+\1
şablonunda,
yakalayan alt şablon özgün olarak harf büyüklüğüne duyarlı eşleştiği
halde bile "rah rah" ve "RAH RAH" ile eşleşecek ama "RAH rah" ile
eşleşmeyecektir.
Aynı alt şablon için birden fazla geriye gönderim olabilir. Bir
şablonun eşleşeceği bir dizge parçası yoksa onunla ilgili geriye
gönderimler daima başarısız olacaktır. Örneğin,
(a|(bc))\2
şablonu "bc" yerine "a" ile başlayan bir
dizgeyle başarısız olacaktır. 99 ayrı geriye gönderim olabileceğinden
bir tersbölüyü takibeden tüm rakamlar olası bir geriye gönderim olarak
ele alınacaktır. Eğer alt şablon bir rakam karakteri ile devam ediyorsa
geri gönderimi sonlandırmak için bir ayraç karakteri gerekir. PCRE_EXTENDED
seçeneği etkinse bu ayraç karakteri, boşluk karakteridir. Aksi takdirde
boş bir açıklama kullanmak gerekir.
Yaylı ayraçların içinde kullanılan bir geriye gönderim, ilgili alt
şablonun hemen ardından kullanılmışsa başarısız olacaktır. Bu bakımdan,
örneğin (a\1) şablonu hiçbir dizgeyle eşleşmeyecektir. Bununla
birlikte, böyle alt şablon içindeki geriye gönderimler bazı durumlarda
oldukça kullanışlı olabilir. Örneğin,
(a|b\1)+
şablonu herhangi bir sayıda "a" veya "aba"
ya da "ababba" ve benzeri dizgesiyle eşleşecektir. Alt şablonun her
yinelenişinde, geriye gönderim kendisiyle ilişkili alt dizge ile
eşleşecektir. Bunun çalışması için, ilk yinelemenin geriye gönderimle
eşleşmesi gerekli değildir. Bu, yukarıdaki gibi olasılık belirtimiyle
veya asgarisi sıfır olan bir yineleyici kullanılarak yapılabilir.
İsimli alt şablonlara gerigönderimler
(?P=ad)
, \k<ad>
,
\k'ad'
, \k{ad}
,
\g{ad}
, \g<ad>
veya
\g'ad'
ile sağlanabilir.