Savlar

Savlar, düzenli bir ifadenin yalnızca belirli denetimli koşullar altında eşleşmesine olanak tanır.

Bir savın eşleşecek bir karaktere gereksinimi yoktur; olası bir eşleşmeyi onaylamadan önce çevreyi araştırır. Örneğin, sözcük sınırı savı, konumunda bir sözcüğün karşısında sözcük olmayan bir karakter bulmaya çalışmaz, bunun yerine bir sözcük karakterinin bulunmadığından emin olur. Bu, hiçbir karakterin olmadığı durumda iddianın eşleşebileceği anlamına gelir; örneğin aranan bir dizinin sonunda.

Bazı savların aslında eşleşecek bir dizgisi vardır; ancak dizi eşleşmesinin parçası, tam ifade eşleşmesinin sonucunun bir parçası olmayacaktır.

Burada belgelenen düzenli ifadeler aşağıdaki savları destekler:

^ (şapka: dizinin başı)

Aranan dizinin başlangıcıyla eşleşir.

^Peter ifadesi, Peter, hey! dizisindeki Peter ile eşleşir; ancak Hey, Peter! ile eşleşmez

$ (dizi sonu)

Aranan dizinin sonuyla eşleşir.

you\?$ ifadesi, You didn’t do that, did you? dizisindeki son you ile eşleşir; ancak You didn’t do that, right? ile eşleşmez

\b (sözcük sınırı)

Bir tarafta sözcük karakteri varken diğer tarafta yoksa eşleşir.

Bu, sözcük sonlarını bulmak için kullanışlıdır; örneğin, bir sözcüğün tamamını bulmak için her iki uç da kullanılabilir. \bin\b ifadesi, He came in through the window dizisindeki in ile eşleşir; ancak window içindeki in ile eşleşmez.

\B (sözcük sınırı olmayan)

\b ifadesinin eşleşmediği her yerde eşleşir.

Bu, örneğin sözcüğün içinde eşleşeceği anlamına gelir: \Bin\B ifadesi, window ile eşleşir; ancak integer veya I’m in love ile eşleşmez.

(?=DİZGİ) (pozitif ileri bakış)

İleriye bakan bir sav, dizinin olası bir eşleşmeyi takip eden kısmına bakar. Olası eşleşmeyi takip eden metin savın DİZGİ’siyle eşleşmezse pozitif bakış dizinin eşleşmesini engeller; ancak bununla eşleşen metin sonuçta içerilmez.

handy(?=\w) ifadesi handyman içindeki handy ile eşleşir; ancak That came in handy! içindekiyle eşleşmez

(?!DİZGİ) (negatif ileri bakış)

Negatif bakış, aranan dizinin aşağıdaki bölümünün DİZGİ ile eşleşmesi durumunda olası bir eşleşmenin onaylanmasını önler.

const \w+\b(?!\s*&) ifadesi, const char* foo içindeki const char ile eşleşir; ancak const QString& bar içindeki const QString ile eşleşmez; çünkü & negatif ileriye bakan sav dizgisi ile eşleşir.

(?<=DİZGİ) (pozitif geri bakış)

Arkaya bakma, ileriye bakmayla aynı etkiye sahiptir; ancak geriye doğru çalışır. Geriye doğru bir bakış, dizinin olası bir eşleşmeden önceki kısmına bakar. Pozitif geriye bakış, yalnızca savın DİZGİ’sinden önce geliyorsa bir diziyle eşleşir; ancak bununla eşleşen metin sonuçta içerilmez.

(?<=cup)cake ifadesi,cake ile yalnızca önünde cup geliyorsa eşleşir (cupcake gibi; ancak cheesecake veya tek başına cake değilse).

(?<!DİZGİ) (negatif geri bakış)

Negatif geriye bakış, aranan dizinin önceki kısmı DİZGİ ile eşleşmiyorsa olası bir eşleşmenin onaylanmasını önler.

(?<![\w\.])[0-9]+ ifadesi, =123 ve -123 dizilerindeki 123 ile eşleşir; ancak .123 veya word123 içindeki 123 ile eşleşemez.

(DİZGİ) (yakalayan grup)

Parantez içindeki alt dizgi yakalanır ve anımsanır; böylece geriye başvurularda kullanılabilir. Örneğin, (&quot;+)[^&quot;]*\1 ifadesi, """"text"""" ve "text" ile eşleşir.

Daha fazla bilgi için Eşleşen metni yakalamak (geriye başvurular) bölümüne bakın.

(?:DİZGİ) (yakalamayan grup)

Parantez içindeki alt dizgi yakalanmaz ve anımsanmaz. Yakalamalar kullanılmayacaksa her zaman yakalamayan grupların kullanılması tercih edilir.