Statement on glibc/iconv Vulnerability

Çıpalar - Şapka ve Dolar İmi

Bir karakter sınıfının dışında, öntanımlı eşleşme kipinde, şapka imi (^), eğer geçerli eşleşme noktası eşleşmeye konu dizgenin başlangıcındaysa doğru sonuç veren bir savdır. Bir karakter sınıfının içinde ise tamamen farklı bir anlama sahiptir (aşağıya bakın).

Şapka imi (^), eğer şablon olasılıklar içeriyorsa şablonun ilk karakteri olmak zorunda değildir, fakat eşleşmenin istendiği her olasılığın ilk karakteri olmak zorundadır. Eğer tüm olasılıklar bir şapka imi (^) ile başlıyorsa, yani şablon eşleşmeye konu dizgenin daima başlangıcıyla eşleştirilmeye çalışılıyorsa buna, dizge başlangıcına demirlenmiş şablon denir. (Bir şablonun demirlenmesine sebep olan başka oluşumlar da olabilir.)

Dolar imi ($), eğer geçerli eşleşme noktası eşleşmeye konu dizgenin sonundaysa veya dizgenin (öntanımlı olarak) son karakteri olan satırsonu karakterinin hemen öncesindeyse doğru sonuç veren bir savdır. Dolar imi ($), eğer şablon olasılıklar içeriyorsa şablonun son karakteri olmak zorunda değildir, fakat eşleşmenin istendiği her olasılığın son karakteri olmak zorundadır. Dolar iminin bir karakter sınıfının içinde özel bir anlamı yoktur.

Derleme veya eşleştirme sırasında PCRE_DOLLAR_ENDONLY seçeneğini etkin kılarak dolar iminin eşleşmeye konu dizgenin daima sonu ile eşleşmesi sağlanacak şekilde anlamı değiştirilebilir. Bu seçeneğin atanmış olması \Z tezinin anlamını etkilemeyecektir.

Şapka ve dolar imlerinin anlamları PCRE_MULTILINE seçeneği (çok satırlı kip) etkin kılınarak değiştirilebilir. Bu durumda, şapka imi eşleşmeye konu dizge içindeki "\n" karakterinin hemen sonrasıyla, dolar imi ise hemen öncesiyle eşleşecektir. Örneğin, aksi belirtilmedikçe, /^abc$/ şablonu çok satırlı kipte "def\nabc" dizgesiyle eşleşecektir. Sonuç olarak, tek satırlık kipte, tüm olasılıkların şapka imi ile başlaması sebebiyle dizge başlangıcına demirlenmiş şablonlar çok satırlı kipte dizge başlangıcına demirlenmiş olmazlar. Eğer PCRE_MULTILINE seçeneği etkinse PCRE_DOLLAR_ENDONLY seçeneği yoksayılır.

\A, \Z ve \z tezlerinin eşleşmeye konu dizgenin başlangıcı ve sonu ile eşleşmek amacıyla her iki kipte de kullanılabileceğine dikkat ediniz. Eğer bir şablondaki tüm olasılıklar \A ile başlıyorsa, PCRE_MULTILINE seçeneği etkin olsun olmasın, şablon daima dizgenin başlangıcına demirlenmiş olacaktır.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top