Regular Expression Nedir? Tam Açıklama
Hızlı Yanıt
Regular expression, bir dizgi setini açıklayan kalıptır. Literal character ve özel anlamlara sahip metacharacter (*, +, ?, ., ^, $, [], (), {}, |, \) kullanır. Regex validation, search, extraction ve replacement için kullanılır. Ücretsiz Regex Tester kullanın.
giriiş
Regular expression (regex veya regexp), bir search kalıbı tanımlayan karakter dizisidir. Kalıp, metni bulmak, match etmek veya değiştirmek için string-search algoritmaları tarafından kullanılır. Regular expression'lar 1950'lerde formal dil teorisinde (Stephen Kleene) ortaya çıktı ve 1970'lerde Unix metin araçlarına (grep, sed, awk) adopt edildi. Bugün regex pratik olarak her programlama dili ve metin editörüne yerleşiktir.
Adım adım
-
Değişmez ve meta karakterleri anlama
Değişmez karakterler (a, b, 1, @) birbirleriyle eşleşir. Metakarakterlerin özel anlamları vardır: . herhangi bir karakterle eşleşir, * sıfır veya daha fazla anlamına gelir, + bir veya daha fazla anlamına gelir, ? sıfır veya bir anlamına gelir, ^ başlangıçla eşleşir, $ bitişle eşleşir.
-
Karakter sınıflarını öğrenin
Köşeli parantezler [] bir karakter sınıfını tanımlar — [aeiou] herhangi bir sesli harfle, [0-9] herhangi bir rakamla, [^0-9] herhangi bir rakam olmayan harfle eşleşir. Kısayol sınıfları: \d (rakam), \w (kelime karakteri), \s (boşluk) ve bunların büyük harf olumsuzlamaları.
-
Niceleyicileri kullanma
Niceleyiciler bir modelin kaç kez tekrarlanacağını belirtir: * (0+), + (1+), ? (0 veya 1), {n} (tam olarak n), {n,} (n+), {n,m} (n'den m'ye). Varsayılan olarak açgözlü; eklemek ? tembel eşleştirme için (örneğin, *?).
-
Grup ve bağlantı
Parantezler () yakalama grupları oluşturur. Değişim | her iki tarafla da eşleşir (kedi|köpek). ^ ve $ çapaları dizenin başlangıcını ve bitişini eşleştirir. Daha basit olanlardan karmaşık desenler oluşturmak için bunları kullanın.
Örnekler
E-postaya benzer bir desenle eşleştirin
Giriş: Pattern: [a-z]+@[a-z]+\.[a-z]+
Çıkış: Eşleşmeler: alice@example.com, bob@test.org
Telefon numarası biçimini eşleştirin
Giriş: Pattern: \d{3}-\d{3}-\d{4}
Çıkış: Matches: 555-123-4567
Anahtar/değer çiftlerini ayıklayın
Giriş: Pattern: (\w+)=(\w+)
Çıkış: Matches 'key=value' with group 1 as key, group 2 as value
Yaygın Sorunlar
- Açgözlü eşleştirme —.* eşleşmelerini mümkün olduğunca fazla tüketir. Kullanmak .*? Tembel eşleştirme için en kısa eşleşmeyi bulma.
- Özel karakterlerden kaçmayı unutmak —., *, +, ?, vb. özeldir. Kelimenin tam anlamıyla eşleştirmek için \ kullanın (örneğin, \. gerçek bir noktayla eşleşir).
- Felaket düzeyinde geri izleme — iç içe geçmiş niceleyicilere sahip modeller (örneğin, (a+)+) belirli girdilerde üstel zaman alabilir ve ReDoS saldırılarına neden olabilir.
- Aşırı eşleştirme — çapalar (^ ve $) olmadan, bir model her yerde eşleşir. Dizenin tamamıyla eşleştirmek için ^...$ kullanın.
İpuçları
- Basit başlayın ve aşamalı olarak karmaşıklığı ekleyin; karmaşık bir normal ifadede hata ayıklamayı aynı anda yapmak çok zordur.
- Örnek metinde kalıplarla denemeler yapmak için bir normal ifade test aracı kullanın; eşleşmelerin gerçek zamanlı olarak vurgulandığını görün.
- Genişletilmiş modu (bazı motorlarda /x bayrağı) kullanarak karmaşık normal ifadeleri yorumlayın veya bunları adlandırılmış parçalara bölün.
- Kalıpları tarayıcınızda anında test etmek için Regex Test Aracımızı kullanın; kayıt gerektirmez, tamamen özeldir.