Tersbölü karakterinin çeşitli kullanımları vardır. Tersbölünün ilk kullanım çeşidinde, bir harfin veya bir rakamın soluna konmuşsa karakterin özel anlamını kaldırır; karakter sınıflarının içinde ve dışında bir önceleme karakteri olarak iş görür.
Örneğin, şablonunuzun "*" karakteri ile eşleşmesini isterseniz, şablonu "\*" biçiminde yazmalısınız. Tersbölü karakterinin öncelediği karakter bir düzenli ifade işleci olsun ya da olmasın yorumu değişmeyecek, daima öncelediği karakter kendisiyle eşleşecektir. Sonuç olarak, önceleme işleci harf veya rakam olmayan karakterlerle de güvenle kullanılabilmektedir. Özellikle, bir tersbölü karakteri ile eşleşme sağlamak için "\\" yazmalısınız.
Bilginize:
Tek ve çift tırnaklı PHP dizgeleri içinde tersbölü karakteri özel olarak ele alınır. Bir \ ile eşleşen \\ düzenli ifadesi, PHP kodu içinde "\\\\" veya '\\\\' olarak belirtilmelidir.
Bir şablon PCRE_EXTENDED seçeneği ile derlenmişse kalıp içindeki (bir karakter sınıfının dışında kalan) boşluk karakterleri ve bir karakter sınıfının dışındaki bir "#" karakteri ile sonraki satırsonu karakteri arasındaki karakterler yok sayılır. Bir boşluk veya "#" karakterini şablonun parçası haline getirmek için, karakter tersbölü ile öncelenir.
Tersbölü karakterinin ikinci kullanımı, basılamayan karakterleri şablon içinde görünür kılmak içindir. İkil sıfırın şablonu sonlandırması dışında basılamayan karakterlerin görünümü ile ilgili bir kısıtlama yoktur. Fakat, bir şablon, bir metni düzenleyerek hazırlanıyorsa aşağıdaki önceleme dizilimlerini kullanmak, ifade ettikleri ikil karakterleri kullanmaktan daha kolaydır:
"\cx" diziliminin en hassas etkisi şöyledir: "x" bir küçük harf ise büyük harfe dönüştürülür ve karakterin 6. biti (onaltılık 40) evrilir. Böylece, "\cz" dizilimi onaltılık 1A haline gelirken "\c{" onaltılık 3B ve "\c;" onaltılık 7B haline gelir.
"\x" dizilimden sonra en fazla iki onaltılık rakam okunur (harfler büyük veya küçük olabilir). UTF-8 kipinde, "\x{...}" gösterimine izin verilir; kaşlı ayraçların arasına yazılan onaltılık sayı UTF-8 karakterin kodu olarak yorumlanır. Özgün onaltılık önceleme dizilimi \xhh, eğer karakterin kodu 127'den büyükse iki baytlık bir UTF-8 karakteri ile eşleşecektir.
"\0" dizilimden sonra en fazla iki sekizlik rakam okunur. Her iki durumda da, iki rakamdan azı varsa olanlar kullanılır. Böylece, "\0\x\07" dizilimi iki ikil sıfırdan sonra bir BEL karakteri olarak yorumlanır. Eğer sekizlik gösterimin hemen ardından sekizlik rakam olarak yorumlanabilecek bir karakter geliyorsa ilk sıfırdan sonra mutlaka iki sekizlik rakam kullanın.
Tersbölünün hemen ardından 0 haricinde bir rakam gelmesi durumunda durum biraz karışır. Bir karakter sınıfının dışında, PCRE o rakamı ve diğer rakamları bir onluk sayı olarak okur. Eğer sayı 10'dan küçükse veya evvelce belirtilmiş yakalayan alt şablonlar varsa dizilimin tamamı bir geriye gönderim olarak ele alınır. İkinci durumun nasıl çalıştığı aşağıda parantezli alt şablonların açıklamasında anlatılmıştır.
Bir karakter sınıfının içinde veya evvelinde yakalayan alt şablonlar bulunmayan 9'dan büyük bir onluk sayı varlığında PCRE tersbölüden sonra en fazla üç sekizlik rakam okur ve değerin en önemsiz 8 bitinden tek bir bayt üretir. Daha sonraki rakamlar karakterlerin kendileri olarak ele alınır. Örnekler:
100'den büyük sekizlik değerlerin başına sıfır konmamalıdır, çünkü üç sekizlik rakamdan fazlası sekizlik sayının rakamları olarak ele alınmamaktadır.
Tek bir bayt değerini tanımlayan tüm dizilimler karakter sınıflarının içinde de dışında da kullanılabilir. Ek olarak, bir karakter sınıfının içinde, "\b" dizilimi bir tersbölü karakteri (onaltılık 08) olarak yorumlanır. Karakter sınıfının dışında ise anlamı farklıdır (aşağıya bakınız).
Tersbölünün üçüncü kullanımı soysal karakter türlerini belirtmek içindir:
Her önceleme dizilimi çifti karakter kümesinin tamamını iki ayrı küme haline getirir. Belirtilen her karakter sadece ve sadece bir çift ile eşleşir.
Bir "sözcük" karakteri herhangi bir harf, rakam veya alt çizgi karakteri olabilir, yani, bir Perl sözcüğünün parçası olabilen her karakter bir "sözcük" karakteri olabilir. Harflerin ve rakamların tanımı PCRE'nin karakter tablosu tarafından denetlenir ve eşleştirme yerele özgü yapılıyorsa bu tanım değişebilir. Örneğin "tr" yerelindeki 128'den büyük karakter koduna sahip "çğıöşü" gibi karakterler \w ile eşleşir.
Karakter türündeki bu dizilimler karakter sınıflarının içinde veya dışında bulunabilir. Her biri uygun türdeki bir karakterle eşleşir. Eğer karakter eşleştirmesinde eşleşmeye konu dizgenin sonuna gelinmişse hiçbir karakter eşleşmeyeceğinden işlem başarısız olacaktır.
Tersbölünün dördüncü kullanımı bazı basit tezleri belirtmek içindir. Bir tez, eşleşmeye konu dizgenin hiçbir karakterini harcamaksızın belli bir noktada yerine getirilmesi gereken bir koşul belirtir. Daha karmaşık tezler için alt şablonların kullanımı aşağıda açıklanmıştır. Tez işleçleri şunlardır:
Bu tez işleçleri "\b" hariç karakter sınıfları içinde görünmezler. "\b" işleci karakter sınıfları içinde özel bir anlama sahiptir ve tersbölü karaterini simgeler.
Eşleşmeye konu dizge içinde geçerli karakterin \w işleci ile ve önceki karakterin \W işleci ile eşleştiği nokta sözcük sınırının başlangıcını; geçerli karakterin \W işleci ile ve önceki karakterin \w işleci ile eşleştiği nokta ise sözcük sınırının bitişini belirler.
\A, \Z ve \z tez işleçleri, seçeneklerle belirlenen şekilde dizgenin en başı ve dizgenin en sonu ile eşleşen geleneksel şapka ve dolar imli işleçlerden (aşağıda açıklanmıştır) farklı olup PCRE_MULTILINE veya PCRE_DOLLAR_ENDONLY seçeneğinden etkilenmezler. \Z ile \z arasındaki fark \Z işlecinin dizgenin son karakteri olan satırsonu karakterinin öncesiyle eşleşmesi, \z işlecinin ise sadece dizge sonu ile eşleşmesidir.
\G savı, sadece, geçerli eşleşme konumu eşleşmenin
başlangıç noktasında (preg_match() işlevinin
başlangıç
değiştirgesi ile belirtilen noktada)
olduğu takdirde doğru olacaktır. başlangıç
sıfırdan farklı olduğu durumda \G işleci
\A işlecinden farklıdır. PHP'nin 4.3.3 sürümünden
beri kullanılabilmektedir.
PHP 4.3.3'ten beri, \Q ve \E işleçleri şablon içindeki düzenli ifade işleçlerini geçersiz kılmak için kullanılabilmektedir. Örneğin, \w+\Q.$.\E$ düzenli ifadesi dizge sonuna demirlenmiş .$. karakterleriyle ve bunların öncesindeki bir veya daha fazla sayıda sözcük karakteriyle eşleşecektir.
\K işleci PHP'nin 5.2.4 sürümünden beri eşleşme başlangıcını sıfırlamak için kullanılabilmektedir. Örneğin, foo\Kbar şablonu, "foobar" ile eşleşir, fakat "bar" ile eşleştiğini raporlar. \K işlecinin kullanımı zaten eşleştirilmiş alt dizge ile etkileşmez. Örneğin, (foo)\Kbar şablonu "foobar" ile eşleşirken eşleşen ilk alt dizge "foo" olacaktır.