içerik
" metninde tamamını eşleştirir, sadece "" kısmını değil. Çünkü yıldız, son > karakterine kadar her şeyi alır.
Tembel (non-greedy) eşleşme için niceleyicinin ardına soru işareti eklenir. "<.*?>" deseni sadece "
Programlar 6 dk okuma
Programlar 5 dk okuma
Programlar 5 dk okuma
" ile eşleşir.
Gruplar ve Alternatifler
Parantezler gruplama için kullanılır. Grupların iki ana işlevi vardır: deseni organize etmek ve eşleşen kısmı yakalamak.
Yakalama Grupları
"(ab)+" deseni ab, abab, ababab ile eşleşir. Parantez içindeki kısım yakalanır ve sonradan kullanılabilir.
Geri referanslar yakalanan grupları tekrar kullanmayı sağlar. "(\w+)\s+\1" deseni tekrar eden kelimeleri bulur. \1 ifadesi birinci yakalama grubunu referans alır.
Yakalamayan Gruplar
Bazen sadece gruplama gerekir, yakalama gerekmez. "(?:ab)+" deseni gruplama yapar ama yakalamaz. Bu performans açısından daha verimlidir.
Alternatifler (|)
Pipe karakteri VEYA anlamına gelir. "kedi|köpek" deseni kedi veya köpek ile eşleşir. "(pazartesi|salı|çarşamba)" deseni bu üç günden biriyle eşleşir.
İleri Düzey: Lookaround
Lookaround (bakınma) ifadeleri, karakterleri tüketmeden koşullu eşleşme sağlar. Dört türü vardır:
Pozitif İleri Bakış (Positive Lookahead)
"X(?=Y)" sözdizimi: X'i bul, ama sadece Y takip ediyorsa.
"\d+(?=€)" deseni 30€ içindeki 30 ile eşleşir. Euro işareti kontrol edilir ama eşleşmeye dahil edilmez.
Negatif İleri Bakış (Negative Lookahead)
"X(?!Y)" sözdizimi: X'i bul, ama Y takip etmiyorsa.
"q(?!u)" deseni "Iraq" içindeki q ile eşleşir ama "queen" içindeki q ile eşleşmez. İngilizce'de q harfinden sonra genellikle u gelir, bu desen istisnai durumları bulur.
Pozitif Geri Bakış (Positive Lookbehind)
"(?<=Y)X" sözdizimi: X'i bul, ama sadece Y öncesinde geliyorsa.
"(?<=\$)\d+" deseni $100 içindeki 100 ile eşleşir. Dolar işareti kontrol edilir ama eşleşmeye dahil edilmez.
Negatif Geri Bakış (Negative Lookbehind)
"(?kullanıcı adı kısmı (bir veya daha fazla karakter), @ literal @ işareti, [a-zA-Z0-9.-]+ domain adı, \. literal nokta, [a-zA-Z]{2,} uzantı (en az 2 harf), $ satır sonu.
Uyarı: E-posta doğrulama aslında çok karmaşık bir konudur. Bu desen çoğu durumu karşılar ama mükemmel değildir. Örneğin "[email protected]" gibi geçerli formatları bazı basit desenler kabul etmez.
Telefon Numarası
Türkiye formatı için: ^(\+90|0)?[5][0-9]{9}$
Bu desen: +90 veya 0 ile başlayabilir (opsiyonel), 5 ile devam eder (cep telefonu), ardından 9 rakam gelir.
Uluslararası format için: ^\+?[1-9]\d{1,14}$
URL Doğrulama
^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$
http veya https ile başlar, www opsiyonel, domain adı ve uzantı zorunlu, path opsiyonel.
Tarih Formatı (GG/AA/YYYY)
^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/\d{4}$
Gün 01-31, ay 01-12, yıl 4 haneli rakam.
IP Adresi (IPv4)
^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
Her oktet 0-255 arasında olmalı.
Şifre Gücü Kontrolü
En az 8 karakter, büyük harf, küçük harf ve rakam içermeli:
^(?=.[a-z])(?=.[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
Bu desen lookahead kullanır: (?=.[a-z]) en az bir küçük harf, (?=.[A-Z]) en az bir büyük harf, (?=.*\d) en az bir rakam, [a-zA-Z\d]{8,} toplam en az 8 karakter.
Programlama Dillerinde Regex
Her dilin regex kullanımı biraz farklıdır. İşte yaygın dillerde örnekler:
JavaScript
const metin = "E-posta: [email protected]";
const desen = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/;
const sonuc = metin.match(desen);
JavaScript'te regex desenleri / / arasına yazılır. Bayraklar: g (global, tüm eşleşmeler), i (büyük-küçük harf duyarsız), m (çok satırlı).
Python
import re
metin = "E-posta: [email protected]"
desen = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
sonuc = re.search(desen, metin)
Python'da r öneki raw string oluşturur, ters slash sorunlarını önler.
PHP
$metin = "E-posta: [email protected]";
$desen = "/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/";
preg_match($desen, $metin, $sonuc);
PHP'de preg_match, preg_match_all, preg_replace fonksiyonları kullanılır.
Test Araçları
Regex yazmak zor olabilir. Neyse ki yardımcı araçlar var:
regex101.com en popüler test aracı. Deseni ve metni girdiğinizde eşleşmeleri gösterir, deseni açıklar ve farklı dil seçenekleri sunar.
regexr.com interaktif öğrenme ortamı sunar. debuggex.com görsel regex açıklaması sağlar.
Bu araçları kullanarak desenlerinizi gerçek veriler üzerinde test edin.
Yaygın Hatalar ve İpuçları
Özel karakterleri escape etmeyi unutmak sık yapılan bir hatadır. Nokta, köşeli parantez, parantez gibi karakterler özel anlam taşır. Literal olarak kullanmak için \ ile escape edin.
Aşırı karmaşık desenler yazmaktan kaçının. Uzun ve anlaşılmaz regex'ler bakımı zorlaştırır. Gerekirse birden fazla basit desene bölün.
Performansa dikkat edin. Yanlış yapılandırılmış desenler "catastrophic backtracking" sorunu yaratabilir. Özellikle iç içe niceleyicilerden kaçının: (a+)+ gibi.
Satır sonu karakterlerini unutmayın. Farklı işletim sistemleri farklı satır sonu karakterleri kullanır (Windows: \r\n, Unix: \n). Bunu göz önünde bulundurun.
Sonuç
Regex, metin işleme problemlerini çözmek için güçlü bir araç. İlk bakışta karmaşık görünse de temel yapı taşlarını öğrendikten sonra mantığı oturur.
Öğrenme stratejisi olarak basit desenlerle başlayın. Meta karakterleri tek tek öğrenin. regex101.com gibi araçlarla pratik yapın. Gerçek problemler üzerinde çalışın.
Regex her programcının araç kutusunda bulunması gereken bir beceri. E-posta doğrulamadan log analizine, kod refactoring'den veri temizlemeye kadar sayısız alanda işinize yarayacak.
Tek seferlik bir öğrenme yatırımıyla, yıllar boyunca zaman kazanacaksınız.
Sırada
İlgili notlar
Programlar 6 dk okuma
MySQL Veritabanı Yönetimi Rehberi
MySQL, dünyanın en popüler açık kaynak veritabanı yönetim sistemidir. Web uygulamalarından kurumsal sistemlere kadar geniş kullanım alanına sahip....
Programlar 5 dk okuma
Bilgisayar Hızlandırma: Performans Artırma Rehberi
Bilgisayarınız yavaşladıysa yeni bir makine almanız gerekmeyebilir. Doğru optimizasyonlarla mevcut sisteminizden çok daha iyi performans alabilirsiniz....
Programlar 5 dk okuma
LibreOffice vs Microsoft Office: Detaylı Karşılaştırma 2026
Ofis yazılımı seçimi önemli bir karardır. Microsoft Office endüstri standardı iken, LibreOffice güçlü ve ücretsiz bir alternatif sunar. Bu rehberde...
Henüz yorum yok.
Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.