Dosya İsmi Kalıpları
Önceki X. Oylum - Şablon Eşleme Sonraki
Dosya İsmi Kalıpları
Bu bölümde belli bir dizgenin bir kalıp ile nasıl eşleştirildiği anlatılacaktır. Sonuç bir evet ya da hayır yanıtıdır: Dizge bir kalıpla ya eşleşir ya da eşleşmez. Bu bölümde bahsedilen sembollerin hepsi fnmatch.h başlık dosyasında bildirilmiştir.
int fnmatch
(const char *kalıp,
 const char *dizge,
 int         seçenekler)
işlev
Bu işlev dizge dizgesi ile kalıp kalıbının eşleşip eşleşmediğine bakar. Eğer eşleşiyorlarsa 0 ile döner, aksi takdirde sıfırdan farklı FNM_NOMATCH değeri ile döner. kalıp ve dizge argümanlarının her ikisi de dizgedir.
seçenekler ile eşleşme ile ilgili ayrıntıları değiştiren seçenek bitleri belirtilir. Belirtilebilecek seçeneklerin listesi için aşağıya bakınız.
GNU C Kütüphanesinde, fnmatch işlevinin hata deneyimi yoktur. Daima eşleşme olup olmadığına ilişkin bir yanıt döndürür. Ancak, işlevin diğer gerçeklenimleri kimi zaman hata raporlayabilir. Bu durumda dönen değerleri FNM_NOMATCH değerinden farklı olacaktır.
seçenekler argümanında belirtilebilecek seçenekler:
FNM_FILE_NAME
/ karakteri dosya isimlerinde özel olarak ele alınır. Bu seçenek etkinse, kalıp, dizge içindeki / karakteri ile eşleşemez. Eşleştirmenin tek yolu kalıp dizgesinin / karakterini içermesidir.
FNM_PATHNAME
Bu POSIX.2 ile gelen bir FNM_FILE_NAME takma ismidir. Biz dosya ismi yerine dosya yolu demediğimizden bu ismin kullanımını önermiyoruz.
FNM_PERIOD
. karakteri dosya isimlerinin başında ise özel olarak ele alınır. Bu seçenek etkinse ve . karakteri dizge dizgesinin ilk karakteri ise kalıp ile eşleşemez.
FNM_PERIOD ve FNM_FILE_NAME birlikte belirtilmişse, . karakterinin dizge dizgesinin başında olmasının yanında / karakterini izlediği durumda da eşleşme seğlanır. (Kabuk FNM_PERIOD ve FNM_FILE_NAME seçeneklerini dosya isimleriyle eşleşme ararken birlikte kullanır.)
FNM_NOESCAPE
\ karakteri kalıplarda özel olarak ele alınmaz. Normalde, \ kendinden sonraki karakteri önceler; bu seçenek etkinse bu özellik kapatılır, böylece sadece kendisiyle eşleşebilir. Önceleme etkin olduğunda, \? kalıbı sadece ? karakteri ile eşleşir, çünkü kalıp içindeki soru işareti sıradan bir karakter gibi işlem görür.
Eğer FNM_NOESCAPE seçeneği etkinse, \ bir sıradan karakterdir.
FNM_LEADING_DIR
dizge içinde / karakterini izleyen karakterler yoksayır; başka bir deyişle kalıp dizgesi dizge dizisinin başındaki bir dizin ismi mi diye bakılır.
Bu seçenek etkinse, foo* ya da foobar bir kalıp olarak foobar/frobozz dizgesi ile eşleşir.
FNM_CASEFOLD
dizge ile kalıp karşılaştırılırken harf büyüklüğüne bakılmaz.
FNM_EXTMATCH
Normal kalıplardan başka ksh'da bahsedilen ek kalıplar da tanınır. Aşağıdaki listedeki kalıp-listesi, | karakterinin ayraç olarak kullanıldığı bir kalıp listesidir.
?(kalıp-listesi)
kalıp-listesi ile belirtilen kalıplar girdi dizgesiyle hiç eşleşmeyebilir ya da bir kere eşleşebilir.
*(kalıp-listesi)
kalıp-listesi ile belirtilen kalıplar girdi dizgesiyle hiç eşleşmeyebilir ya da defalarca eşleşebilir.
+(kalıp-listesi)
kalıp-listesi ile belirtilen kalıplar girdi dizgesiyle ya en azından bir kere ya da defalarca eşleşebilir.
@(kalıp-listesi)
kalıp-listesi ile belirtilen kalıplar girdi dizgesiyle sadece bir kere eşleşebilir.
!(kalıp-listesi)
kalıp-listesi ile belirtilen kalıplar girdi dizgesiyle hiç eşleşmiyorsa eşleşme sağlanmış demektir.
Önceki Üst Ana Başlık Sonraki
X. Oylum - Şablon Eşleme Başlangıç Genelleme
Bir Linux Kitaplığı Sayfası