KeroTools

Düzenli İfadeleri Test Et ve Ayıkla

Bir regex kalıbını test edin ve yazarken eşleşmeleri, grupları ve bayrakları canlı olarak görün.

//g
2 eşleşme
eşleşme
Contact us at hello@kerotools.com or support@example.org.

Desen ve örnek cihazınızda kalır

Sonradan silinecek bir şey yok

Gerçek üretim örnekleri için güvenli

Her modern tarayıcıda çalışır

Nasıl çalışır

  1. 1

    Deseninizi girin

    Alana yazın ve üretimde kullanmayı düşündüğünüz bayrakları ayarlayın.

  2. 2

    Temsili metin yapıştırın

    Zor durumları ve hiç eşleşmemesi gereken dizeleri de ekleyin.

  3. 3

    Eşleşmeleri ve grupları okuyun

    Deseni bir yere taşımadan önce hem bulunanı hem atlananı denetleyin.

Neden bu araç

Her eşleşme canlı vurgulanır

Söz diziminden tahmin etmek yerine, deseni yazarken gerçekte neyi yakaladığını görün.

Yakalama grupları ayrılır

Numaralı ve adlı gruplar eşleşme başına listelenir; desenlerin çoğu asıl orada yanlıştır.

Görebildiğiniz bayraklar

Genel, büyük-küçük harf duyarsız, çok satırlı ve dotall bir sınırlayıcıya gömülmek yerine açıkça gösterilir.

Eşleşmemesi gerekenleri de sınayın

Reddedilmesi gereken dizeleri, eşleşmesi gerekenlerin yanına yapıştırın — insanların atladığı yarı budur.

Hiçbir şey yüklenmez

Desen ve örnek metin tarayıcınızda kalır; gerçek günlük satırları hiçbir sunucuya ulaşmaz.

Ücretsiz, hesapsız

Kayıt yok, filigran yok, ne kadar sınayacağınıza dair sınır yok.

Örneklerinizle eşleşen bir desen, işleyen bir desen değildir

Neredeyse herkes aynı biçimde sınar: ifadeyi yaz, yakalaması beklenen üç dizeyi yapıştır, vurgulandıklarını gör, yayına al. Bu, desenin tümüyle bozuk olmadığını doğrular ve asıl ısıracak arıza hakkında size hiçbir şey söylemez. İlginç soru neyi eşleştirdiği değil, başka neyi de eşleştirdiğidir — hiç düşünmediğiniz ve sızıp geçen girdi ile sessizce reddettiği geçerli girdi. Dört örnekte çalışan bir telefon numarası deseni, uluslararası bir önekle, bir dahili numarayla ya da beklenmedik bir yerdeki boşlukla karşılaşacaktır. Dolayısıyla benimsenmeye değer disiplin şudur: reddedilmesi gereken dizeleri bilinçli olarak, yakalanması gerekenlerin yanına yapıştırın ve desen her değiştiğinde iki listeyi de denetleyin.

Bazı desenler kendilerini çalıştıran süreci kilitleyebilir

Bir düzenli ifadeyi bir kesintiye dönüştüren arıza budur ve bilinmeye değer, çünkü olana kadar görünmezdir. Çoğu motor geri izlemeyle eşleştirir: bir dal başarısız olunca geri çekilip başkasını dener. İç içe niceleyicilerde — kendisi de yinelenen, yinelenmiş bir grup, `(a+)+` biçiminde — denenecek düzenlemelerin sayısı girdi uzunluğuyla üstel büyür. Eşleşen bir dizede anında biter; *neredeyse* eşleşen ve sonunda başarısız olan bir dizede ise evrenin var olduğundan uzun sürebilir. Desen kullanıcı girdisine uygulandığında bu bir hizmet reddi vektörüdür ve büyük hizmetleri çökertmiştir: hem Cloudflare hem Stack Overflow, küresel bir kesintiyi tam da buna bağlayan olay sonrası raporlar yayımladı. Deseninizde nicelenmiş bir grubun içinde bir niceleyici varsa, üretime yaklaşmadan önce onu uzun ve eşleşmeyen bir dizeyle sınayın.

Tek bir düzenli ifade dili yoktur

Söz dizimi taşınabilir görünür ama değildir. JavaScript, PHP ve Perl’ün kullandığı PCRE, Python, Java, .NET ve POSIX araçlarının her biri farklı bir lehçe uygular ve desenler aralarında anlamları sessizce değişerek dolaşır. Geriye bakış yaygın bir tuzaktır: PCRE’de onlarca yıldır vardır ve JavaScript’e ancak yakınlarda ulaştı, dolayısıyla düzenleyicinizde çalışan bir desen tarayıcıda başarısız olabilir. Go ve birkaç başka sistem RE2 kullanır; bu tümüyle farklı bir tasarımdır — doğrusal zaman garanti eder, yani yukarıdaki felaket geri izleme olanaksızdır, ama bunu geri başvuruları ve çevreye bakışı tamamen atarak başarır. Adlı grup söz dizimi, Unicode özellik kaçışları ve hatta `\d`’nin neyi kapsadığı bile değişir. Dağıtacağınız lehçede sınayın; yoksa sonuç burada geçip orada kalmaktır.

Varsayılan açgözlüdür ve nokta sandığınızdan dardır

İki varsayılan, tuhaf davranan desenlerin büyük bir bölümünü açıklar. Niceleyiciler açgözlüdür: `.*` alabildiğince alır ve yalnızca mecbur kaldığını geri verir; dolayısıyla `<a><b>` üzerinde `<.*>` ilk etiketi değil bütün dizeyi eşleştirir. Bir soru işareti eklemek onu tembel yapar — `<.*?>` — ve her etiketi ayrı eşleştirir ki neredeyse her zaman amaçlanan budur. İkinci varsayılan, noktanın satır sonunu eşleştirmemesidir. Bu tek satırlık örneklerde görünmez ve desen çok satırlı bir belgeyle karşılaşıp ilk satır sonunda durduğu an bir gizeme dönüşür; dotall bayrağı bunu düzeltir. İlgili bir çift de ayırt edilmeye değer: çok satırlı bayrak `^` ve `$`’ın anlamını değiştirip onları bütün dize yerine her satıra bağlar ve noktaya hiçbir şey yapmaz.

Düzenli ifadenin kullanılmaması gereken yerler

HTML’i regex ile ayrıştırmama öğüdü genellikle bir şaka gibi aktarılır, ama altındaki neden kesindir: HTML keyfî derinlikte iç içe geçer, bir açılış etiketini kapanışına eşlemek saymayı gerektirir ve bir düzenli ifadenin sayacak belleği yoktur. Mesele daha iyi bir desen yazmak değildir — dil sınıfı yanlıştır. E-posta adresleri başka türlü başarısız olur. RFC 5322’deki dilbilgisi tırnaklı dizelere, açıklamalara ve kimsenin beklemediği karakterlere izin verir; dolayısıyla gerçekten uyumlu bir desen binlerce karaktere ulaşır ve yine de önemli olan tek şeyi söyleyemez: adresin posta alıp almadığını. İkisi için de pratik kural: yapılandırılmış işaretleme için gerçek bir ayrıştırıcı kullanın ve bir adres için iki yanında da bir şey olan bir `@` bulunduğunu denetleyip ardından bir doğrulama iletisi gönderin.

Bu tür metinde yerel sınama neden önemlidir

Desenin kendisi nadiren hassastır. Onu sınamak için yapıştırdığınız şey genellikle hassastır, çünkü bir düzenli ifade ancak gerçekçi girdiye karşı sınanmaya değer — yani içinde gerçek adresler bulunan gerçek günlük satırları, temizlemeye çalıştığınız bir müşteri kaydı dışa aktarması, sentetik örnekler sorunu yakalamadığı için tam da bu yüzden kopyaladığınız bir üretim verisi örneği. Sınamayı anlamlı kılan malzeme budur ve üçüncü bir tarafa vermeyi seçmeyeceğiniz malzeme de budur. Bu araç eşleştirmeyi sayfada çalıştırır ve ne deseni ne örneği iletir; bunu geliştirici araçlarının Ağ sekmesinde doğrulayabilirsiniz.

Kaçınılması gereken yaygın hatalar

  • Yalnızca eşleşmesi gereken dizeleri sınamak. Isıran arıza, hiç düşünmediğiniz girdinin sızıp geçmesidir — desen her değiştiğinde reddedilmesi gerekenleri de yapıştırın.
  • Nicelenmiş bir grubun içine niceleyici yerleştirmek. `(a+)+` gibi biçimler kıl payı kaçıran bir girdide üstel geri izler; bu, belgelenmiş küresel kesintilere yol açmış bir hizmet reddi vektörüdür.
  • Desenin taşınabilir olduğunu varsaymak. Geriye bakış, adlı gruplar ve Unicode kaçışları JavaScript, PCRE, Python ve RE2 arasında farklıdır — dağıtacağınız lehçede sınayın.
  • `.` işaretinin satır sonunu eşleştirmediğini unutmak. Tek satırda çalışan bir desen belgedeki ilk satır sonunda durur; istediğiniz dotall bayrağıdır, çok satırlı değil.
  • HTML ayrıştırmak ya da e-posta doğrulamak için regex kullanmak. İç içe geçme regex’in sahip olmadığı bir sayaç ister ve uyumlu bir e-posta deseni bile adresin posta alıp almadığını söyleyemez.

Karşılaştırma

ÖlçütBu araçÇevrimiçi sınayıcılarBir düzenleyicinin bul paneli
İçerik sunucuya gönderilirAslaGenellikle evetHayır
Yakalama grupları ayrılırEvetGenellikleNadiren
Bayraklar açıkça gösterilirEvetGenellikleKısmen
Proje açmadan çalışırEvetEvetHayır
Hesap veya kayıtGerekmezBazen istenirGerekmez
FiyatÜcretsizÜcretsiz / ücretli paketÜcretsiz / ücretli

Özellikler

Canlı vurgulama

Desen değiştikçe örnek metinde eşleşmeler işaretlenir, üzerine gelince ayrıntısıyla.

Adlı ve numaralı gruplar

Her yakalama eşleşme başına listelenir, böylece hangi grubun neyi tuttuğunu görürsünüz.

Yaygın bayrakların tümü

Genel, büyük-küçük harf yok say, çok satırlı, dotall, unicode ve yapışkan — her biri bağımsız açılıp kapanır.

Eşleşme sayısı ve konumları

Kaç isabet ve nerede başladıkları; arama değil değiştirme yaparken bu önemlidir.

Söz dizimi hataları açıklanır

Dengesiz bir ayraç ya da bozuk bir kaçış, sessizce hiçbir şey eşleştirmek yerine neyin yanlış olduğunu söyler.

Uzun girdiyi kaldırır

Bütün günlük dosyaları, yükleme olmadan sınama konusu olarak yapıştırılabilir.

Kurulum gerekmez

Düzenleyici, çalışma ortamı ya da bağımlılık yok — web sayfasında çalışır.

Arapça ve RTL uyumlu

Sağdan sola Arapça dahil sekiz dilde tam arayüz.

Varsayılan olarak güvenli

HTTPS üzerinden sunulur, içerik izleme ve üçüncü tarafa yükleme yoktur.

Kimler kullanıyor

Geliştiriciler

Bir deseni koda koymadan önce gerçek örnek veriye karşı doğru hale getirmek.

Veri analistleri

Dağınık bir sütun için çıkarma deseni kurmak ve tam olarak neyi kaçırdığını görmek.

Sistem yöneticileri

Bir günlük süzme ifadesini uydurma değil gerçek günlük satırlarına karşı denetlemek.

Düzenli ifade öğrenen herkes

Bir desenin siz değiştirdikçe ne yaptığını izlemek — okumaktan hızlıdır.

Sıkça Sorulan Sorular

Hayır. Her şey tarayıcınızda yerel çalışır — metniniz asla yüklenmez, saklanmaz veya paylaşılmaz.

Evet — tamamen ücretsiz, hesap ve sınır yok.