regcomp işlevi, bir dizgeyle eşleştirmek üzere regexec işlevinde kullanmak için bir düzenli ifadeyi bir veri yapısına derler. Derlenmiş düzenli ifadenin biçimi verimli bir eşleştirmeyi mümkün kılacak şekilde tasarlanmıştır. Derlenen düzenli ifadeyi işlev *şablon nesnesine yerleştirir.
regex_t türünde bir nesne ayırıp bunun adresini regcomp işlevine aktarmalısınız.
derleme-seçenekleri argümanı düzenli ifadelerin sözdizimini ve anlamsal bütünlüğünü denetleyen bazı seçenekleri belirtmek için kullanılır. Bkz.
POSIX Düzenli İfade Seçenekleri.
REG_NOSUB seçeneği belirtilmişse, regcomp işlevi derlenen düzenli ifadeye alt ifadelerin nasıl eşleştirileceği bilgisini yerleştirmez. Bu durumda, regexec çağrısında eşleşenler ve eşleşen-sayısı argümanlarına 0 değerini aktarmalısınız.
Eğer REG_NOSUB seçeneğini belirtmezseniz, derlenen düzenli ifade alt ifadelerin nasıl eşleştirileceği bilgisini de içerir. Ayrıca, regcomp işlevi şablon'un kaç alt ifade içerdiğini şablon->re_nsub üyesine yazar. Bu bilgiyi alt ifade eşleştirmesinde tutulacak bilgi için ayrılacak dizinin uzunluğuna karar vermek için kullanabilirsiniz.
regcomp işlevi düzenli ifadeyi başarıyla derleyebilmişse
0 ile döner; aksi takdirde, sıfırdan farklı bir hata kodu ile döner (aşağıya bakınız). Dönen hata kodundan hata dizgesini üretmek için
regerror işlevini kullanabilirsiniz; bkz.
POSIX Şablonunun Temizlenmesi.
regcomp işlevinin döndürdüğü sıfırdan farklı değerler:
- REG_BADBR
Düzenli ifade içinde geçersiz bir \{…\} yapısı vardır. Geçerli bir \{…\} yapısı ya tek bir sayı ya da virgülle ayrılmış iki sayı içermelidir.
- REG_BADPAT
Düzenli ifade içinde bir sözdizimi hatası var.
- REG_BADRPT
? veya * gibi yineleme işleçleri yanlış yerde (bu işleçlerden önce üzerinde işlem yapılacak bir alt ifade olmalıdır).
- REG_ECOLLATE
- REG_ECTYPE
Düzenli ifade geçersiz bir karakter sınıfı ismi içeriyor.
- REG_EESCAPE
Düzenli ifade \ ile bitiyor.
- REG_ESUBREG
Geçersiz sayıda \rakam yapısı var.
- REG_EBRACK
Düzenli ifade gruplanmamış köşeli ayraçlar içeriyor.
- REG_EPAREN
Düzenli ifade gruplanmamış parantezler içeriyor ya da \( ve \) arasında olması gereken bir temel düzenli ifadenin sarmalayıcılarından biri eksik.
- REG_EBRACE
Düzenli ifadede \{ ve \} sarmalayıcılardan biri eksik.
- REG_ERANGE
Bir aralık ifadesindeki sonlandırıcılardan biri geçersiz.
- REG_ESPACE
regcomp için bellek yetersiz.