GNU Düzenli İfadesinin Derlenmesi
Önceki GNU Regex İşlevleri Sonraki
GNU Düzenli İfadesinin Derlenmesi
GNU’da, belirtilmiş olan bir düzenli ifade için hem eşleme hem de arama yapabilirsiniz. Bunu yapmak için, öncelikle onu bir şablon tamponu içinde derlemelisiniz.
re_syntax_options
değişken
Düzenli ifadeler birlikte derlendikleri söz dizimlerine göre eşleşirler; GNU‘da, re_compile_pattern derleme işlevi çağrılmadan önce, re_syntax_options değişkeni (regex.h içinde bildirilmiş ve regex.c içinde tanımlanmıştır) ile hangi sözdizimini istediğinizi belirtebirsiniz. Sözdizimi Bitleri ve Öntanımlı Sözdizimleri bölümlerine bakınız.
re_syntax_options değişkeninin değerini istediğiniz zaman değiştirebilirsiniz. Ancak, genellikle, değeri bir kere atanır ve bir daha değiştirilmez.
re_compile_pattern işlevi argüman olarak struct re_pattern_buffer türünde bir şablon_tamponu alır. Aşağıdaki alanları ilklendirmelisiniz:
translate
Bir çeviri tablosunu göstermesini istiyorsanız bir ile, istemiyorsanız sıfır ile ilklendirin. Çeviri tabloları, GNU Çeviri Tabloları bölümünde açıklanmıştır.
fastmap
Bir hızlı eşlem istiyorsanız bir ile istemiyorsanız sıfır ile ilklendirin.
buffer
allocated
re_compile_pattern işlevinin derlenmiş şablon için bellek ayırmasını istiyorsanız bunların her ikisini de sıfır ile ilklendirin. Daha önce malloc ile ayırdığınız bir bellek bloğu varsa ve Regex'in bunu kullanmasını istiyorsanız, adresi ile buffer'ı genişliği ile de allocated'i ilklendirin:
struct re_pattern_buffer buf;

buf.allocated = 1;
buf.buffer = xmalloc (buf.allocated);
re_compile_pattern işlevi, gerektiği takdirde ayrılan bloğu genişletmek için realloc işlevini kullanacaktır.
char *re_compile_pattern
(const char               *düzenli_ifade,
 const int                *ifade_boyutu,
 struct re_pattern_buffer *şablon_tamponu)
işlev
Bir şablon tamponunu derlemek için kullanılır.
düzenli_ifade düzenli ifadenin adresidir, ifade_boyutu ifadenin uzunluğu ve şablon_tamponu da şablon tamponunun adresidir.
re_compile_pattern işlevi şablon tamponunu başarıyla derlerse sıfır ile döner ve *şablon_tamponu derlenen tamponu gösterir. Şablon tamponunun işlev tarafından ayarlanan alanları:
buffer
derlenen şablon ile ilkendirilir.
used
şablon_tamponu içindeki derlenmiş şablonun bayt cinsinden uzunluğu ile ilklendirilir.
syntax
re_syntax_options değişkeninin o anki değeri ile ilklendirilir.
re_nsub
düzenli_ifade içindeki alt ifadelerin sayısı ile ilklendirilir.
fastmap_accurate
Teorik olarak şablon_tamponu içine derlediğiniz şablon bir önceki derlemeden farklı olacağından sıfırla ilklendirilir; bu durumda (bir derlenmiş şablon olmaksızın bir hızlı eşlem yapamayacağınızdan), fastmap ya uyumsuz bir hızlı eşlem içerecekti ya da hiçbir şey.
re_compile_pattern işlevi düzenli_ifade'yi, derleyemezse, POSIX Düzenli İfadelerinin Derlenmesi bölümünde listesi verilen hatalardan birine karşılık olan bir hata dizgesi ile döner.
Önceki Üst Ana Başlık Sonraki
GNU Şablon Tamponları Başlangıç GNU Eşleştirme İşlevi
Bir Linux Kitaplığı Sayfası