GNU Çeviri Tabloları
Önceki GNU Regex İşlevleri Sonraki
GNU Çeviri Tabloları
Bir şablon tamponunun translate alanına bir çeviri tablosu yerleştirirseniz, GNU Regex işlevleri bu şablon tamponunu düzenli ifadenin tamamına ve aranan dizge karakterlerine basit bir dönüşüm uygulamakta kullanır.
Bir çeviri tablosu karakter kümenizdeki karakterlerle indislenmiş bir dizidir. Bu nedenle, ascii karakter kümesinde bir çeviri tablosu 256 elamanlıdır. Dizinin elamanları ayrıca karakter kümenizin karakterleridir. Regex işlevleri bir c karakteri gördüğünde onun yerine translate[c] kullanır, bir istisna dışında: karakter bir \ ile öncelenmişse çeviri yapılmaz. Böylece, \B ve \b gibi işleçlerin seçilebilirliği garanti altına alınır.
Örneğin; bütün küçük harfleri büyük harflere dönüştürmek üzere tasarlanmış bir tablo, eşleştiricinin harf büyüklükleri farkını yok saymasına sebebiyet verir.[115] Böyle bir tablo, küçük harfler dışındaki karakterleri kendileriyle, küçük harfleri de karşılıkları olan büyük harflerle eşleyecektir. Ascii kodlama altında, böyle bir tabloyu nasıl ilklendireceğiniz aşağıda gösterilmiştir (tablonun ismi case_fold'dur):
  for (i = 0; i < 256; i++)
    case_fold[i] = i;
  for (i = 'a'; i <= 'z'; i++)
    case_fold[i] = i - ('a' - 'A');
Regex'in bir şablon tamponu üzerinde bir çeviri tablosunu kullanmasını isterseniz, tablonun adresini tamponun translate alanına atamalısınız. Regex'in herhangi bir çeviri yapmasını istemezseniz, bu alana sıfır yerleştirin. Şayet tablonun içeriğini şablon tamponunu derleme, hızlı eşlemi derleme, şablon tamponu ile eşleşme ve aramalar arasında herhangi bir zamanda değiştirmeye kalkarsanız tuhaf sonuçlar alırsınız.


[115] Bütün büyük harfleri, karşılığı olan küçük harflere dönüştürmeye yarayacak bir tablo sadece bu amaç için çalışacaktır.
Önceki Üst Ana Başlık Sonraki
Hızlı Eşlemlerle Arama Başlangıç Yazmaçların Kullanımı
Bir Linux Kitaplığı Sayfası