Düzenli ifade (regular expression, kısaca regex), bir metin içinde belirli bir örüntüyü (kalıbı) tanımlamak için kullanılan özel bir sözdizimidir. Örneğin \d{11} "art arda 11 rakam" demektir, [A-Z][a-z]+ ise "büyük harfle başlayan bir kelime" anlamına gelir. Regex; form doğrulama (TC kimlik, telefon, e-posta), log dosyası analizi, metin arama-değiştirme ve veri ayıklama gibi işlerde JavaScript, Python, PHP, Java gibi hemen her dilde benzer sözdizimiyle kullanılır.
Regex test etmek neden önemli?
. yerine \. kullanmamak) beklenmedik eşleşmelere yol açabilir. Canlı bir test aracıyla deseni gerçek örnek verilere karşı deneyip hangi kısımların eşleştiğini görsel olarak doğrulamak, üretim koduna hatalı bir regex koymadan önce en güvenilir yöntemdir.Yakalama grupları (capture groups) nedir?
(abc) bir bölüm "yakalama grubu" oluşturur ve eşleşen metnin o kısmını ayrı erişilebilir kılar. (?:abc) yakalamayan (non-capturing) gruptur — yalnızca gruplamak içindir, numaralandırılmaz. (?<ad>abc) ise gruba bir isim verir (named group); sonuçlarda hem numarayla hem isimle erişilebilir.- Numaralı grup —
(\d{2})-(\d{2}): "12-34" metninde grup 1="12", grup 2="34". - İsimli grup —
(?<yil>\d{4}): sonuç nesnesindegruplar.yilolarak erişilir. - Yakalamayan grup —
(?:abc)+: "abc" tekrarını gruplar ama numaralandırmaz.
Bul-değiştir (replace) nasıl çalışır?
$1, $2… veya isimli gruplara $<ad> ile erişilir. Örneğin (\d{4})-(\d{2})-(\d{2}) desenine karşı $3/$2/$1 yazılırsa "2026-07-17" → "17/07/2026" olur. "g" bayrağı işaretli değilse yalnızca ilk eşleşme değiştirilir; bu araçtaki "Değiştir" sekmesinde bunu canlı deneyebilirsiniz.Regex bayrakları (flags) ne işe yarar?
g tüm eşleşmeleri bulur (kapalıysa yalnızca ilki), i büyük/küçük harf duyarlılığını kapatır, m ^/$ çapalarını her satır başı/sonu için de çalıştırır, s (dotall) .'nin yeni satırı da eşlemesini sağlar, u ise deseni Unicode kod noktalarına göre yorumlar. Bayraklar desenin arkasına değil, ayrı bir seçenek olarak eklenir.Sık kullanılan regex sembolleri (özet)
| Sembol | Anlamı | Örnek |
|---|---|---|
| \d | Rakam (0-9) | \d{4} → "2026" |
| \w | Kelime karakteri (harf/rakam/_) | \w+ → "merhaba_123" |
| \s | Boşluk (space/tab/satır sonu) | \s+ → " " |
| ^ $ | Metin/satır başı ve sonu | ^abc$ → tam "abc" |
| * + ? {n,m} | Tekrar (nicelik) belirteçleri | a{2,4} → "aa".."aaaa" |
| (...) (?:...) (?<ad>...) | Yakalama / yakalamayan / isimli grup | (\d+)-(\d+) |