Ayırıcılar
PCRE işlevlerini kullanırken şablonların ayırıcılar
arasına alınması gerekir. Ayırıcılar tersbölü imi ve boşluk karakterleri
hariç herhangi bir abecesayısal karakter olabilir. Geçerli bir ayırıcıdan
önceki baştaki boşluklar sessizce yok sayılır.
Sıkça kullanılan ayırıcılar şunlardır: Bölü çizgisi
(/
), diyez imi (#
) yaklaşık imi
(~
). Aşağıda, şablonlarda ayırıcı kullanımı ile
örneklere yer verilmiştir.
Açma ve kapama parantezlerinin sırasıyla başlangıç ve bitiş sınırlayıcısı
olduğu köşeli parantez tarzı sınırlayıcıları da kullanmak mümkündür.
()
, {}
, []
ve
<>
çiftlerinin tümü, geçerli köşeli ayraç tarzı
sınırlayıcı çiftleridir.
Köşeli ayraç stili sınırlayıcılarının, kalıp içinde meta karakterler
olarak kullanıldıklarında öncelenmesi gerekmez, ancak diğer
sınırlayıcılarda olduğu gibi, değişmez karakterler olarak
kullanıldıklarında bunların da öncelenmesi gerekir.
Sınırlayıcının kalıp içinde eşleştirilmesi gerekiyorsa, tersbölü çizgisi
kullanılarak öncelenmesi gerekir. Sınırlayıcı sık sık kalıbın içinde
görünüyorsa, okunabilirliği artırmak için başka bir sınırlayıcı seçmek
daha iyidir.
preg_quote() işlevi, bir bir kalıba yerleştirmek için
bir dizeyi öncelemekte kullanılabilirve isteğe bağlı ikinci bağımsız değişkeni,
öncelenecek sınırlayıcıyı belirtmek için kullanılabilir.
Şablonu sonalndıran ayırıcının ardına bir
şablon
değiştircisi eklemek de mümkündür. Aşağıda, harf büyüklüğüne
duyarsız eşleşmeyle ilgili bir örnek vardır:
Pedro Gimeno ¶9 years ago
Note that bracket style opening and closing delimiters aren't a 100% problem-free solution, as they need to be escaped when they aren't in matching pairs within the expression. That mismatch can happen when they appear inside character classes [...], as most meta-characters lose their special meaning. Consider these examples:
<?php
preg_match('{[{]}', ''); preg_match('{[}]}', ''); preg_match('{[}{]}', ''); ?>
Escaping them solves it:
<?php
preg_match('{[\{]}', ''); preg_match('{[}]}', ''); preg_match('{[\}\{]}', ''); ?>
Revo ¶6 years ago
Note that angle brackets `<>` shouldn't be used as delimiters whenever you will have to invoke advanced clusters like atomic groups or lookbehinds because their including angle bracket doesn't come in pair and escaping doesn't help either.
Munin ¶9 years ago
preg_match('{[}]}', ''); // Warning: preg_match(): Unknown modifier ']'
preg_match('{[\}]}', ''); // OK