Regex Patterns Pratik Rehberi
Regex, metin içinde desen aramanın en kısa yoludur. Bir satır ifade, yüzlerce satır if-else'in yerini tutar. Ama sözdizimi ilk bakışta korkutur. Bu rehber, düzenli ifadeleri parça parça söker ve her parçayı hemen deneyebileceğin örneklerle gösterir.
Hazırlık basit. Bir test ortamı seç: tarayıcı konsolu, terminal (grep -E), ya da bir online regex test aracı. Kod yazmadan önce deseni orada dene. Yanlış desen, sessizce yanlış veri döndürür; bu yüzden görsel olarak eşleşmeyi görmek önemlidir.
Temel Yapı Taşları: Desen Nasıl Kurulur
Her regular expression patterns setinin arkasında üç soru vardır: Ne arıyorum, kaç tane ve nerede? Karakter sınıfları "ne"yi, niceleyiciler "kaç tane"yi, çapalar "nerede"yi çözer.
Karakter sınıfları ve kaçış karakterleri
.— yeni satır hariç her karakter.\d— rakam,\w— harf/rakam/alt çizgi,\s— boşluk.- Büyük harfli hali tersini verir:
\D,\W,\S. [aeıioöuü]— köşeli parantez içindeki karakterlerden biri.[^0-9]— şapka içerideyse "değil" anlamına gelir.[a-zçğıöşü]— Türkçe karakterleri elle eklemeyi unutma;\wher motorda onları kapsamaz.
Nokta, artı, parantez gibi karakterlerin kendisini aramak istiyorsan önlerine ters bölü koy: \., \+, \(.
Niceleyiciler ve açgözlülük
| Desen | Anlamı |
|---|---|
* | 0 veya daha fazla |
+ | 1 veya daha fazla |
? | 0 veya 1 (isteğe bağlı) |
{3} | tam 3 tane |
{2,5} | 2 ile 5 arası |
{2,} | en az 2 |
En sık yapılan hata açgözlülüktür. <.*> deseni bir HTML satırında ilk etiketi değil, satırın tamamını yutar. Çözüm tembel niceleyici: <.*?>. Soru işareti, niceleyicinin peşine takıldığında "mümkün olan en azı al" demektir.
Çapalar, gruplar ve alternatifler
^satır başı,$satır sonu.\bkelime sınırı.\bkod\b, "kodlama" ile eşleşmez.(...)yakalayan grup. Eşleşen parçayı sonradan kullanmanı sağlar.(?:...)yakalamayan grup. Sadece gruplamak için, hafızayı boşa harcamaz.|alternatif:(jpg|png|webp).(?<yil>\d{4})isimli grup. Karmaşık desenlerde okunabilirliği kurtarır.
Bayraklar da işin bir parçası: i büyük-küçük harf duyarsızlığı, g tüm eşleşmeler, m çok satırlı mod, s noktanın yeni satırı da kapsaması.
Pratik Kullanım: Arama, Değiştirme, Doğrulama
Sözdizimini bilmek yetmez. Regex'in değeri, gerçek bir dosyada veya kod tabanında zaman kazandırdığında ortaya çıkar.
Yakalama gruplarıyla değiştirme
Değiştirme tarafında gruplara $1, $2 (bazı araçlarda \1) ile ulaşırsın. Tarih formatı çevirmek klasik örnektir:
- Desen:
(\d{4})-(\d{2})-(\d{2}) - Değiştirme:
$3.$2.$1 - Sonuç:
2023-04-09→09.04.2023
Aynı mantık terminalde de çalışır: sed -E 's/(\d{4})-(\d{2})-(\d{2})/\3.\2.\1/g'. Bash script yazma alışkanlığın varsa bu kalıp log dosyalarını temizlemede sürekli işine yarar.
Doğrulama desenleri: aşırıya kaçma
E-posta doğrulaması için internette gezen devasa desenler vardır. Çoğu gereksizdir. Pratikte şu yeter:
^[^@\s]+@[^@\s]+\.[^@\s]+$
Kritik doğrulamayı gerçek bir onay adımıyla yap. Regex sadece kaba filtredir. Diğer sık kullanılan kalıplar:
- Türkiye cep telefonu:
^(\+90|0)?5\d{9}$ - Hex renk kodu:
^#(?:[0-9a-fA-F]{3}){1,2}$ - IPv4 kaba eşleşme:
\b(?:\d{1,3}\.){3}\d{1,3}\b - Boş satırları bulma:
^\s*$
Editörde ve terminalde günlük kullanım
Regex'i en çok editörün arama kutusunda kullanırsın. VS Code'da arama alanındaki .* düğmesini açıp tüm projede desenle arayabilirsin — editör kısayollarını hızlandırmayla ilgili notlar bu konuda tamamlayıcıdır. Terminal tarafında ise:
grep -Ein "hata|error" app.logile filtrele.grep -Eo "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b© 2026 Yazılım Atölyesi