TRE (bilgi işlem) - TRE (computing)

TRE
Orijinal yazar (lar)Ville Laurikari[1]
Depo Bunu Vikiveri'de düzenleyin
YazılmışC
TürYaklaşık dize eşleşmesi
Lisans2 maddeli BSD benzeri lisans
İnternet sitesiLaurikari.ağ/ tre/

TRE bir açık kaynak kütüphane için desen eşleştirme metinde[2] gibi çalışan Düzenli ifade yapabilme kabiliyetine sahip motor yaklaşık dize eşleşmesi.[3] Ville Laurikari tarafından geliştirilmiştir.[1] ve bir altında dağıtılır 2 maddeli BSD benzeri lisans.

Kütüphane[4] yazılmıştır C ve giriş metin satırları üzerinden arama yapmak için normal ifadelerin kullanılmasına izin veren işlevler sağlar. Diğer normal ifade motorlarından temel farkı, TRE'nin metin parçalarını yaklaşık olarak eşleştirebilmesidir, yani, metnin bir takım sayıda yazım hataları.

Özellikleri

TRE kullanır genişletilmiş normal ifade Önceki parçayı yaklaşık bir şekilde eşleştirmek için "yönler" eklenerek sözdizimi. Bu tür yönlerin her biri, bu parça için kaç yazım hatasına izin verildiğini belirtir.

Yaklaşık eşleşme[5] benzer bir şekilde gerçekleştirilir Levenshtein mesafesi Bu, 'tanınan' üç tür yazım hatası olduğu anlamına gelir:[6]

Yazım hatasıMisalVeri
fazladan bir karakterin eklenmesidüzenleyici deneyimekstra l, ekstra e
kalıptan bir karakter eksikkayıt ifadesieksik sen, eksik r
bazı karakterlerin değiştirilmesiregolar ifadesenÖ, sz

TRE, maliyet üç yazım hatasının her biri için bağımsız olarak.

Proje, bir komut satırı yardımcı programı ile birlikte gelir. agrep.

Yaklaşık eşleştirme bazı sözdizimi uzantılarını gerektirse de, bu özellik kullanılmadığında, TRE diğer normal ifade eşleştirme motorlarının çoğu gibi çalışır. Bu şu demek

  • kesin eşleşme için yazılmış sıradan normal ifadeleri uygular;[3][7]
  • aşina programcılar POSIX tarzı düzenli ifadeler[4] TRE'yi kullanabilmek için fazla çalışma yapmanıza gerek yoktur.[3]

Öngörülebilir zaman ve hafıza tüketimi

Kütüphanenin yazarının durumu[8] eşleştirme için harcanan zaman, girdi metin uzunluğunun artmasıyla doğrusal olarak artar, eşleştirme sırasında bellek gereksinimi sabittir ve girdiye bağlı değildir, yalnızca modele bağlıdır.

Diğer

Normal ifade motorlarının çoğu için ortak olan diğer özellikler kontrol edilebilir normal ifade motorları karşılaştırma tabloları veya web sayfasındaki TRE özellikleri listesinde.

Kullanım örneği

Yaklaşık eşleşen yönler kıvrımlı parantez içinde belirtilmiştir ve tekrar eden nicelik belirteçlerinden ayırt edilebilir olmalıdır (muhtemelen parantezi açtıktan sonra bir boşluk ekleyerek):

  • (düzenli){~1}\s+(ifade){~2} "normal" ifadesinin birden fazla yazım hatası içermeyen ve "ifade" ikiden fazla olmayan "normal ifade" ifadesinin varyantlarıyla eşleşir; sıradan normal ifadelerde olduğu gibi " s +"bir veya daha fazla boşluk karakteri anlamına gelir - ör. düzensiz ifade testi geçecekti;
  • (ifade) {5i + 3d + 2s <11} yazım hatalarının toplam maliyeti 11'den az ise, ekleme maliyeti 5, silme 3 ve karakter ikamesi 2 olarak ayarlanmışsa "ifade" kelimesiyle eşleşir - ör. Ekspresson 10'luk maliyet verir.

Dil bağlamaları

C dışında, TRE aracılığıyla kullanılabilir bağlamalar için Perl, Python ve Haskell. [9] Varsayılan düzenli ifade motorudur. R.[10] Ancak proje olması gerekiyorsa çapraz platform, hedef platformların her biri için ayrı ayrı arayüz gerekli olacaktır.

Dezavantajları

Diğer düzenli ifade motorları genellikle yaklaşık eşleştirme yeteneği sağlamadığından, TRE'nin karşılaştırılabileceği hemen hemen hiçbir eşzamanlı uygulama yoktur. Bununla birlikte, programcıların gelecekteki sürümlerde uygulanmasını görmek isteyebilecekleri birkaç şey vardır:[11]

  • eşleşen metin parçalarını değiştirmek için bir değiştirme mekanizması (örneğin sed dize işlemcisi ve düzenli ifadelerin birçok modern uygulaması, yerleşik dahil Perl veya Java );
  • başka bir yaklaşık eşleme algoritması kullanma fırsatı ( Levenshtein'ın ) daha iyi yazım hatası değeri değerlendirmesi için (örneğin Soundex ) veya en azından bu algoritmanın "takas" türündeki yazım hatalarını sağlamak için iyileştirilmesi gerekir (bkz. Damerau-Levenshtein mesafesi ).

Ayrıca bakınız

Referanslar

  1. ^ a b "R: Ham Vektörler için Desen Eşleştirme". MIT.edu.
  2. ^ "Tre Windows için".
  3. ^ a b c "Tre-agrep ile bulanık aramaları kullanma". Linux Dergisi.
  4. ^ a b "tre 0.8.0-6 (x86_64)". 7 Temmuz 2020.
  5. ^ Andoni, Alexandr; Krauthgamer, Robert; Onak, Krzysztof (2010). Düzenleme mesafesi ve asimetrik sorgu karmaşıklığı için polilogaritmik yaklaşım. IEEE Symp. Bilgisayar Biliminin Temelleri (FOCS). arXiv:1005.4033. Bibcode:2010arXiv1005.4033A. CiteSeerX  10.1.1.208.2079.
  6. ^ "TRE web sayfası - Normal İfade Sözdizimi".
  7. ^ "Tre-agrep, grep'in tüm işlevlerine sahiptir, ancak belirsiz veya belirsiz de olabilir"
  8. ^ "TRE web sayfası - Hakkında".
  9. ^ "TRE web sayfası - SSS".
  10. ^ "R'de kullanıldığı şekliyle Normal İfadeler".
  11. ^ "Önden Okuma ile Etiketli Belirleyici Sonlu Otomata". pratik iyileştirmeler .. Lurikari algoritması, özellikle ..

Dış bağlantılar

daha fazla okuma