Anasayfa » Kodlama » Normal İfade İçin Başlangıç ​​Kılavuzu (Regex)

    Normal İfade İçin Başlangıç ​​Kılavuzu (Regex)

    Normal ifade, bir dizgede aranabilecek bir desen oluşturan karakter dizisidir. Regex için kullanılabilir onaylama Kredi kartı numaralarını doğrulamak gibi arama yani, karmaşık metin eşleşmeleri yoluyla ve eşleşen metni değiştirme başka bir dizeyle. Aynı zamanda harika çoklu dil desteğine sahiptir - bir kez öğrenin ve birçok programlama dilinde kullanabilirsiniz.

    Çok az kişinin regex'e ilk kez baktığını ve görmezden geldiğini gördüm. Onları suçlamıyorum; regex'in sözdizimi karmaşıktır ve bu komut satırı dilleri gibi birçok cümbüşü daha da kötüleştirir. Ama sonra her yeni şey korkutucu ve ilk başta öğrenmek imkansız görünüyor. Böylece Horatius'un sözlerini ödünç alırken şunu söylerim; Akıllıca olmak için başlayın, cesur olun ve teşebbüs edin.

    Regex hakkında

    Regex'in kökleri sinirbilim ve matematikte oldu ve 1968'de yalnızca metin arama için QED metin editöründe Ken Thompson tarafından programlamada uygulandı. Şimdi Perl, Java, Python, Ruby ve JavaScript gibi birçok programlama dilinin bir parçası..

    Regex'in nasıl çalıştığına dair bazı örneklere bakalım.

    Örneklerimde JavaScript kullanacağım. Şimdi, başlangıç ​​seviyesinden geçmek için tüm bilgileri öğrenmeniz gerekir. karakterler, sınıflar, niceleyiciler, değiştiriciler ve yöntemler regex'te kullanılır. İşte tüm bunları içeren bir tablo görüntüleyebileceğiniz Mozilla Geliştirici Ağı'nın Normal İfade sayfasına bir link. Ayrıca en çok kullanılan karakterlerle bu yazının sonundaki kopya sayfasına da bakabilirsiniz..

    Bir açıklama ile basit bir örnek görelim. Bu bir regex.

    Bu, yukarıdaki regex'in bir satırda arayacağı şeydir, 'B' karakteri, ardından 'a' ila 'z', 'A' ila 'Z' ve (0) arasında herhangi bir karakterden en az birini izler. 9.

    İşte vurgulanan satırdaki bir eşleşme örneği:

    sepet, ampul, B12 vitamin, BaSO4, N- MİLATTAN ÖNCE şirket

    Yukarıdaki regex, aramayı durdurur sepet ve olumlu bir cevap döndürün. O yüzden küresel değiştiricig'belirtilmeli Eğer regex'in olası tüm eşleşmeleri aramasını istiyorsan.

    Şimdi, bu ifadeyi JavaScript'te nasıl kullanacağımızı görelim. Ölçek yöntem gider: eşleşme dönüşü bulunursa doğru, Başka yanlış.

     var input = "test dizeniz", regex = / B [a-zA-Z \ d] + /; if (! regex.test (input)) alert ('Eşleşme bulunamadı'); else alert ('Bir eşleşme bulundu');

    Başka bir yöntem deneyelim: maç bir dizide bulunan eşleşmeleri döndürür.

     var input = "test dizeniz", regex = / B [a-zA-Z \ d] + / g, / * Tüm eşleşmeleri almak için 'g' genel değiştiricisini regex'e ekledim * / ary = input.match (normal ifade); if (ary === null) alert ('Eşleşme bulunamadı'); else alert ('eşleşmeler:' + ary.toString ());

    Peki ya dize değiştirmek? Şimdi bunu regex ile deneyelim.

     var input = "test dizeniz", regex = / B [a-zA-Z \ d] + / g; uyarı (input.replace (regex, "#"));

    Tweak için aşağıda bir codepen. JS kodunu görüntülemek için "JavaScript" sekmesine tıklayın.

    Egzersizler

    Egzersizler için google yapabilirsiniz “regex çalışmaları” ve onları çözmeyi deneyin. Zorluk seviyelerine göre, bu alıştırmaları yaparken ne bekleyeceğiniz işte.

    Temel

    Bana yapabilmek bir şifreyi doğrula yeni başlayanlar için yeterli. Bu nedenle, izin verilen özel karakterleri seçtiğinizde alfanümerik olan 8 ila 16 karakter uzunluğunda bir şifre doğrulayın..

    Orta düzey

    Burası daha gerçek dünya verileriyle pratik yapmanız ve birkaç daha fazla regex puanı öğrenmeniz gereken yer. bakma, iddialara bakma ve eşleşen gruplar;

    • PIN kodlarını, onaltılıkları, tarihleri, e-posta kimliğini, kayan noktayı doğrulayın.
    • Sondaki sıfırı, boşlukları ve eşleşen bir sözcük grubunu değiştirin
    • Bir URL’nin farklı bölümlerini çıkart

    ileri

    Yukarıdaki alıştırmaların çözümlerini optimize edebilirsiniz - e-posta için en optimum regex'in içinde binlerce karakter var - yani rahat hissettiğin kadarıyla al ve bu kadarı yeter. Ayrıca deneyebilirsiniz:

    • HTML veya XML ayrıştırma (gerçek dünyada olmasına rağmen, HTML gibi normal olmayan bir dili ayrıştırmak için normal ifadeyi kullanmak asla kusursuz olmaz. Artı XML ayrıştırma zor bir iştir, ileri seviye kullanıcılar için daha uygundur).
    • Etiketleri değiştirme
    • Yorumları kaldırma (IE koşullu yorumları hariç)

    Araçlar

    Araçlar regex görselleştirmek benim için en havalı şeylerden biri. Uzun ve karmaşık bir regex ile karşılaşırsanız, kopyaları bu araçlardan birine kopyalayın ve akışı net bir şekilde görebilirsiniz. Bunun yanı sıra, regex koduyla baş etmek için kullanabileceğiniz birçok araç var. Ayrıca paylaşım özellikleri ile birlikte örnekler ve hileler sergiliyorlar..

    • Debuggex - Girişinize göre bir regex diyagramı çizer ve hemen buradan StackOverflow için hızlı bir paylaşım yapabilirsiniz..
    • RegExr - Düzenli ifadenizi bununla test edebilirsiniz. Aynı zamanda referans, bir dolandırıcılık ve size yardımcı olacak örnekler aldı..
    • Refiddle - Şu anda, JavaScript dışında, içindeki Regex’in Ruby ve .NET sürümleriyle de uğraşabilirsiniz..

    Regex Hileleri

    Jeton Tanım
    [ABC] Herhangi bir tek karakter a, b veya c
    [^ Abc] A, b veya c dışındaki herhangi bir karakter
    [A-z] A ile z arasındaki (dahil) karakter
    [^ A-z] A'dan z'ye hariç karakter
    [A-Z] A ile Z arasındaki (dahil) A arasındaki karakter
    . Herhangi bir tek karakter
    \ s Herhangi bir boşluk karakteri
    \ S Herhangi bir boşluk olmayan karakter
    \ d 0 - 9 arası herhangi bir rakam
    \ D Herhangi bir rakamsız
    \ w Herhangi bir kelime karakteri (harf, sayı ve alt çizgi)
    \ W Herhangi bir kelime dışı karakter
    (…) Ekteki her şeyi yakala
    (A | b) A veya b ile eşleştirin
    bir? A karakteri yoktur ya da bir kez bulunur
    a * A karakteri yoktur veya daha fazla kez vardır
    bir+ A karakteri bir veya daha fazla kez mevcut
    bir 3 Art arda 3 karakter oluşumu
    bir 3 Art arda 3 veya daha fazla karakter oluşumu
    bir 3,6 Art arda 3 - 6 karakter oluşumu
    ^ Dizenin başlangıcı
    $ Dizenin sonu
    \ b Bir kelime sınırı. Bir karakter kelimenin son veya ilk kelime karakteri ise veya bir karakter kelime veya kelime olmayan karakter arasındaysa
    \ B Sözsüz sınır

    Şimdi Oku: Normal İfadeler: 30 Yararlı Araçlar ve Kaynaklar