Alt-ifade Eşlemesindeki Sorunlar
Önceki Düzenli İfade Eşleştirme Sonraki
Alt-ifade Eşlemesindeki Sorunlar
Kimi zaman bir alt-ifade hiçbir karakter içermeyen bir altdizge ile eşleşebilir. Bu durum örneğin fum dizgesi f\(o*\) ifadesiyle eşleştiğinde ortaya çıkar. (Aslında sadece f eşleşir.) Bu durumda, konumların her ikisi de bulunan boş altdizgeleri gösterir. Bu örnekte her iki konum da 1'dir.
Kimi zaman bir düzenli ifade, alt-ifadeler hiç kullanılmadan eşleşir; örneğin, ba\(na\)* ifadesi ba dizgesiyle eşleşirken parantezli alt-ifade kullanılmaz. Bu durumda bu alt-ifadenin elemanındaki her iki alan da -1 içerir.
Kimi zaman düzenli ifadenin tamamının eşleştirilmesinde belli bir alt-ifade defalarca eşleşebilir; örneğin, ba\(na\)* ifadesi bananana dizgesi ile eşleştirilirken parantezli alt-ifade üç kere eşleştirilmiştir. Bu durumda regexec çağrısı alt-ifade ile eşleşen son dizge parçasının konumlarını kaydeder; bananana için bu komumlar 6 ve 8'dir.
Fakat son eşleşme daima seçilenlerden biri olmaz. Eşleşme için en elverişli olanın öncelikli olanlardan biri olduğu söylenebilir. Yani, bir alt-ifade bir diğerinin içinde görünüyorsa sonuçlar son eşleşen dış alt-ifadedeki eşleşmeyi ifade eden içteki alt-ifade için raporlanır. Örneğin, \(ba\(na\)*s \)* ifadesinin "bananas bas " dizgesi ile eşleştiğini varsayalım. Son defasında içteki ifade aslında ilk sözcüğün sonuna doğru eşlenir. Ancak ikinci sözcüğün tekrar eşleşeceği varsayıldığında eşleme başarısız olur. regexec, "na" alt-ifadesinin kullanılmadığını raporlar.
Bu kuralın uygulandığı başka bir örnek:
\(ba\(na\)*s \|nefer\(ti\)* \)*
Bu ifade bananas nefertiti ile eşleşir. İlk sözcükte "na" alt-ifadesi eşleşir, ama ikinci sözcükte bu alt-ifade değil, onun alternatifi olan alt-ifade eşleşir. Bir kere daha, dış alt-ifadenin ikinci yinelemesi birincinin üzerine yazar ve bu ikinci yinelemede "na" alt ifadesi kullanılmaz. Bu durumda, regexec, "na" alt-ifadesinin kullanılmadığını raporlar.
Önceki Üst Ana Başlık Sonraki
Alt İfadelerle Eşleşmeler Başlangıç POSIX Şablonunun Temizlenmesi
Bir Linux Kitaplığı Sayfası