POSIX Düzenli İfadelerinin Derlenmesi
Önceki POSIX Regex işlevleri Sonraki
POSIX Düzenli İfadelerinin Derlenmesi
POSIX ile, belirtilen bir düzenli ifade için sadece arama yapabilirsiniz; onu eşleştiremezsiniz. Bunu yapabilmek için, regcomp kullanarak, düzenli ifadeyi bir şablon tamponu içinde derlemelisiniz.
int regcomp
(regex_t    *şablon,
 const char *düzenli_ifade,
 int         derleme_imleri)
işlev
Bir POSIX şablon tamponunu derlemek için kullanılır.
şablon, ilklendirilmiş şablon tamponunun adresi; düzenli_ifade, düzenli ifadenin adresi ve derleme_imleri ise bir bit kolleksiyonu olarak derleme imleridir. Burada geçerli bitler regex.h başlık dosyasında tanımlanmıştır:
REG_EXTENDED
POSIX Genişletilmiş Düzenli İfade sözdiziminin kullanılacağını belirtir; şayet bu bit bir ise POSIX Genişletilmiş Düzenli İfade sözdiziminin kullanılacağını, aksi takdirde POSIX Temel Düzenli İfade sözdiziminin kullanılacağını belirtilmiş olur. regcomp işlevi şablon'un syntax alanını buna göre düzenler.
REG_ICASE
Büyük/küçük harf ayrımı yapılmaz; regcomp işlevi, şablon'un translate alanını, büyük/küçük harf duyarsız bir çeviri tablosuna ayarlar, burada daha önceden bulunan herşeyi değiştirir.
REG_NOSUB
şablon'un no_sub alanını ayarlar; bunun ne anlama geldiğini öğrenmek için POSIX Eşleştirmesi bölümüne bakınız.
REG_NEWLINE
regcomp işlevi düzenli ifadeyi derleyebilirse, derlenmiş şablonu *şablon'a yerleştirir ve sıfır değeriyle döner. syntax alanı hariç (yukarıda açıklandığı gibi ayarlanır). Ayrıca, GNU derleme işlevinin yaptığı benzer bir yolla aynı alanları ayarlar.
regcomp işlevi düzenli ifadeyi derleyemezse, aşağıda listelenen hata kodlarından biriyle döner. (Aksi belirtilmedikçe, aşağıdaki tüm örneklerin sözdizimi temel düzenli ifade sözdizimidir.)
REG_BADRP
Örneğin, a** içindeki ardışık yineleme işleçleri ** geçersizdir. Başka bir örnek olarak; şayet sözdizimi, genişletilmiş düzenli ifade sözdizimi ise, * içinde yapacak hiçbir şeyi olmayan yineleme işleci * geçersizdir.
REG_BADBR
Örneğin, a\{-1 içindeki -1 tekrar sayısı olarak geçersizdir.
REG_EBRACE
Örneğin, a\{1 ifadesinde sınırlı sayıda yineleme bitirme işleci eksiktir.
REG_EBRACK
Örneğin, [a ifadesine eşleşme listesi bitirme işleci eksiktir.
REG_ERANGE
Örneğin, [z-a] aralığında aralık sonu olan z harf sıralaması bakımından başlangıç olan a'dan küçük yapılmıştır ve aralık ifadesi geçersizdir. Ayrıca, [[:alpha:]-|] aralığında, aralığın başlangıcı olarak [:alpha:] karakter sınıfıyla aralık yine geçersizdir.
REG_ECTYPE
Örneğin, [[:foo:] içindeki foo karakter sınıfı ismi geçersizdir.
REG_EPAREN
Örneğin, a\) ifadesinde grup başlatma işleci ve \(a ifadesinde grup sonlandırma işleci eksiktir.
REG_ESUBREG
Örneğin, \(a\)\2 ifadesinde grup adresleme işleci \2 olmayan bir grubu gösterdiğinden geçersizdir.
REG_EEND
Düzenli ifade özel bir hata koduna sebep olmuyorsa döner.
REG_EESCAPE
Örneğin, a\ ifadesi içindeki \ tıpkı \ ifadesindeki gibi geçersizdir.
REG_BADPAT
Örneğin, genişletilmiş düzenli ifade sözdiziminde, a()b ifadesi içindeki boş grup () geçersizdir.
REG_ESIZE
Bir düzenli ifade 65536 bayttan daha büyük bir şablon tamponu gerektiriyorsa döner.
REG_ESPACE
Bir düzenli ifade bellek taşmasına sebep oluyorsa döner.
Önceki Üst Ana Başlık Sonraki
POSIX Şablon Tamponları Başlangıç POSIX Eşleştirmesi
Bir Linux Kitaplığı Sayfası