Yükleme yok, %100 yerel, hesap yok

Nasıl yapılır

Hiçbir şey kurmadan bir regex nasıl test edilir

Bir desen yazdınız ve onu koda eklemeden önce gerçekten beklediğiniz şeyle eşleşip eşleşmediğini bilmeniz gerekiyor. Masaüstü bir araç kurmak veya özel bir kaydı rastgele bir siteye yapıştırmak gereğinden fazlası, ve çoğu zaman riskli. Bu rehber, bir regex'i kendi metninize karşı doğrudan tarayıcıda nasıl çalıştıracağınızı, davranışı değiştiren bayrakları nasıl açıp kapatacağınızı, çıkardığı yakalama gruplarını nasıl okuyacağınızı ve eşleşmelerin satır içi vurgulanmasını nasıl izleyeceğinizi gösterir, hem desen hem de metin sekmenizden hiç ayrılmadan.

Adım adım

  1. Regex test aracını açın ve deseninizi iki eğik çizgi arasındaki alana yazın. Eğik çizgileri kendiniz yazmazsınız: araç, deseni bir motorun okuduğu şekilde görmeniz için onları gösterir. Aşağıdaki kutuya örnek metninizi yapıştırın, örneğin birkaç kayıt satırı, bir e-posta listesi veya içinde arama yapmak istediğiniz bir kod bloğu.
    Test aracına girilmiş bir regex deseni ve bir bayraklar dizesi, aşağıdaki kutuya yapıştırılmış örnek metinle
  2. Bayrakları desenin yanındaki küçük kutuya ayarlayın. g bayrağı ilkinde durmak yerine her eşleşmeyi bulur; i eşleşmeyi büyük küçük harfe duyarsız yapar; m, ^ ve $ sabitleyicilerinin tüm metin yerine her satırın başını ve sonunu eşleştirmesini sağlar; s noktanın satır sonlarıyla da eşleşmesini sağlar. Bunları serbestçe birleştirin, örneğin gim.
  3. Test'e basın. Her eşleşme doğrudan metninizde vurgulanır ve aşağıdaki liste her eşleşmeyi konumu ve her yakalama grubunun değeriyle gösterir. Deseni ince ayarlayın ve tekrar çalıştırın: önizleme güncellenir, böylece deseni tam olarak kastettiğiniz şeyi ve başka hiçbir şeyi yakalayana kadar daraltabilirsiniz.
    Test sonucu: satır içi vurgulanan eşleşmeler ve her eşleşme konumunu ve yakalama gruplarını gösteren bir liste

Yakalama grupları, adlandırılmış ve numaralandırılmış

Yakalama grubu, deseninizin parantez içine alınmış kısmıdır ve sadece tümünün eşleştiğini onaylamak yerine her eşleşmeden bir parça çekme yöntemidir. Numaralandırılmış gruplar açılış parantezine göre soldan sağa sayılır: (\d{4})-(\d{2})-(\d{2}) içinde grup 1 yıl, grup 2 ay, grup 3 gündür. Adlandırılmış gruplar (?<name>...) sözdizimini kullanır, bu yüzden (?<year>\d{4}), desen büyüdüğünde çıplak bir sayıdan çok daha iyi okunur. Yalnızca yakalamadan gruplamak istiyorsanız, örneğin birkaç karaktere bir niceleyici uygulamak için, sonuç listenizi kalabalık yapmaması adına yakalamayan bir grup (?:...) kullanın. Test aracı her eşleşme için her grubun değerini gösterir, bu da doğru dilimi çıkardığınızı onaylamanın en hızlı yoludur.

Bir desen takıldığında veya yanlış davrandığında

İki sorun tekrar tekrar ortaya çıkar. Birincisi felaket niteliğinde geri izleme: uzun ve eşleşmeyen bir dizeye karşı çalıştırılan (a+)+$ gibi bir desen, motorun üstel sayıda yol denemesine ve donmasına neden olabilir. Test aracı her testi kısa bir bekçi ile bir Web Worker içinde çalıştırır, böylece donmuş bir sekme yerine net bir mesaj alırsınız ve deseni basitleştirebilirsiniz, genellikle bir niceleyiciyi ruhen sahiplenici yaparak, sabitleyerek veya iç içe tekrarlardan kaçınarak. İkincisi açgözlü ile tembel eşleşme: varsayılan olarak .* yapabildiği kadar çoğunu kapar, bu nedenle tek bir HTML etiketinin içeriğini eşleştirmek için tembel biçim .*? istersiniz. Deseninizin neyi hedeflemesi gerektiğini görmek için bir dizenin biraz farklı iki sürümünü karşılaştırıyorsanız, metin fark aracı ifadeyi yazmadan önce farkın belirgin olması için onları hizalar.

Tarayıcı regex'inizi nasıl değerlendirir

Modern tarayıcılar, tam bayrak kümesini destekleyen yerleşik bir ECMAScript regex motoruyla gelir: büyük/küçük harfe duyarsız eşleme (i), çok satırlı mod (m), dotAll (s), Unicode (u) ve yapışkan bayrak (y). Test aracına bir desen yazdığınızda motor, bunu dahili bir NFA'ya derler ve her eşleşme konumunu ile yakalama gruplarını bildirerek gerçek zamanlı olarak test dizenize karşı değerlendirir. Geri izleme, işlemcinizde yerel olarak gerçekleşir: uzun ve eşleşmeyen bir dizede (a+)+ gibi bir desen saniyeler boyunca çalışabilir; bu donmayı tarayıcıda görmek, deseni üretim koduna dağıtmadan önce yararlı bir geri bildirimdir. Sayfadan hiçbir metin çıkmaz; bu nedenle günlük örnekleri veya herhangi bir girişi üçüncü taraf bir sunucu üzerinden yönlendirmeden yapıştırabilirsiniz.

Bu rehberde kullanılan araçlar

Sıkça sorulan sorular

Desenim veya test metnim bir sunucuya gönderiliyor mu?

Hayır. Regex kendi tarayıcınızdaki bir Web Worker içinde çalışır, bu nedenle desen ve test ettiğiniz metin sekmede kalır. Bu önemlidir çünkü yapıştırdığınız metin çoğu zaman gerçek bir kayıt, bir müşteri listesi veya bir iç yapılandırmadır, tam olarak başkasının sunucusunda olmasını istemediğiniz türden veriler. Test'e basarken geliştirici araçlarınızdaki Ağ panelini açın ve metninizi dışarı taşıyan hiçbir istek görmeyeceksiniz. Sayfa yüklendikten sonra çevrimdışı da çalışmaya devam eder.

Test aracı hangi regex türünü kullanır?

Tarayıcınızda yerleşik olan JavaScript düzenli ifade motorunu kullanır, Node.js'te ve herhangi bir web sayfasında çalışanın aynısı. Bu yaygın sözdizimini kapsar: karakter sınıfları, niceleyiciler, sabitleyiciler, alternasyon, numaralandırılmış ve adlandırılmış yakalama grupları, ileri bakış ve geri bakış. Perl tarzı özyineleme veya sahiplenici niceleyiciler gibi diğer türlerdeki birkaç özellik JavaScript motorunun parçası değildir, bu yüzden bir PHP veya Python projesinden kopyaladığınız bir desen farklı davranıyorsa, bu türdeki farklılık genellikle nedenidir.

Kaynaklar