Regex Nedir?
Regex (Regular Expressions - Düzenli İfadeler), metin içinde kalıp eşleştirme ve metin manipülasyonu yapmak için kullanılan güçlü bir araçtır. Hemen hemen tüm programlama dillerinde desteklenen regex, arama, doğrulama, ayrıştırma ve değiştirme işlemlerinde vazgeçilmez bir yetenektir. E-posta doğrulama, telefon numarası kontrolü veya log dosyası analizi gibi pek çok senaryoda regex kullanılır.
Temel Regex Söz Dizimi
Karakter Eşleştirme
| Sembol | Açıklama | Örnek | Eşleşme |
|---|---|---|---|
| . | Herhangi bir karakter | a.c | abc, a1c, a-c |
| \d | Herhangi bir rakam | \d{3} | 123, 456 |
| \w | Harf, rakam veya alt çizgi | \w+ | hello, test_1 |
| \s | Boşluk karakteri | a\sb | a b |
| \D | Rakam olmayan karakter | \D+ | abc, xyz |
| \W | Alfanumerik olmayan karakter | \W | @, #, ! |
Niceleyiciler (Quantifiers)
| Sembol | Açıklama | Örnek |
|---|---|---|
| * | Sıfır veya daha fazla | ab*c eşleşir: ac, abc, abbc |
| + | Bir veya daha fazla | ab+c eşleşir: abc, abbc |
| ? | Sıfır veya bir | colou?r eşleşir: color, colour |
| {n} | Tam olarak n kez | a{3} eşleşir: aaa |
| {n,m} | n ile m arası | a{2,4} eşleşir: aa, aaa, aaaa |
| {n,} | En az n kez | a{2,} eşleşir: aa, aaa, aaaa... |
Karakter Sınıfları
Köşeli parantezler içinde tanımlanan karakter sınıfları, belirli bir karakter grubundan birinin eşleşmesini sağlar:
- [abc]: a, b veya c karakterlerinden biri
- [a-z]: Küçük harflerden biri
- [A-Z]: Büyük harflerden biri
- [0-9]: Rakamlardan biri
- [^abc]: a, b ve c dışındaki herhangi bir karakter
- [a-zA-Z0-9]: Alfanumerik karakterlerden biri
Çapa Karakterleri (Anchors)
Çapalar, eşleşmenin konumunu belirler:
- ^: Satırın başlangıcı
- $: Satırın sonu
- \b: Kelime sınırı
Gruplar ve Yakalama
Yakalama Grupları
Parantezler ile oluşturulan gruplar, eşleşen metni yakalar ve sonraki işlemlerde kullanılmasını sağlar. Her grup bir numara alır ve geri referanslarla erişilebilir.
İsimli Gruplar
Gruplarınıza isim vererek kodu daha okunabilir hale getirebilirsiniz. Farklı dillerde söz dizimi değişse de mantık aynıdır.
Yaygın Regex Kalıpları
Sık kullanılan regex kalıplarından bazıları şunlardır:
- E-posta doğrulama: Temel e-posta formatını kontrol eder
- Telefon numarası: Farklı formatlardaki telefon numaralarını yakalar
- URL doğrulama: HTTP/HTTPS URL formatını kontrol eder
- IP adresi: IPv4 adres formatını doğrular
- Tarih formatı: GG/AA/YYYY gibi tarih kalıplarını yakalar
Regex Performans İpuçları
Regex kullanırken performansa dikkat etmek önemlidir:
- Greedy vs Lazy: Varsayılan olarak niceleyiciler açgözlüdür (greedy). Soru işareti ekleyerek tembel (lazy) yapabilirsiniz
- Geri izleme (backtracking): Karmaşık kalıplar aşırı geri izlemeye neden olabilir
- Önceden derlenmiş regex: Sık kullanılan kalıpları önceden derleyin
- Basit tutun: Mümkün olduğunca basit ve spesifik kalıplar yazın
Regex Araçları
Regex kalıplarınızı test etmek ve geliştirmek için kullanabileceğiniz araçlar:
- regex101.com: Çevrimiçi regex test aracı, detaylı açıklamalar sunar
- regexr.com: Görsel regex test ve öğrenme aracı
- IDE eklentileri: VS Code ve IntelliJ gibi editörler regex desteği sunar
Sonuç
Regex, her geliştiricinin araç kutusunda bulunması gereken güçlü bir yetenektir. Ekolsoft olarak veri doğrulama, metin işleme ve log analizi süreçlerimizde regex'ten yoğun biçimde faydalanıyoruz. Bu rehberdeki temel kavramları öğrenerek regex dünyasına sağlam bir giriş yapabilirsiniz. Başlangıçta karmaşık görünse de pratik yaptıkça regex kalıpları doğal bir refleks haline gelecektir.