Regex, metinde desen aramanın dilidir. Bir kere mantığını kavrayınca her yerde işine yarar: form doğrulama, log ayıklama, toplu değiştirme.
Temel taşlar
| Desen | Anlamı | Örnek eşleşme |
|---|---|---|
. |
herhangi bir karakter | a, 7, @ |
\d |
rakam | 0-9 |
\w |
harf/rakam/alt çizgi | a, Z, 3, _ |
\s |
boşluk | boşluk, tab |
[abc] |
a, b veya c | b |
[^abc] |
a, b, c DIŞINDA | x |
a* |
0 veya daha fazla a | “”, a, aaa |
a+ |
1 veya daha fazla a | a, aaa |
a? |
0 veya 1 a | “”, a |
a{2,4} |
2 ila 4 a | aa, aaaa |
^ $ |
satır başı / sonu | |
(...) |
grup (yakala) | |
a|b |
a veya b |
İşe yarar hazır desenler
E-posta (basit): ^[\w.+-]+@[\w-]+\.[\w.-]+$
Türkiye cep (başında 0 opsiyonel): ^0?5\d{9}$
Tarih YYYY-AA-GG: ^\d{4}-\d{2}-\d{2}$
IPv4: ^(\d{1,3}\.){3}\d{1,3}$
Boşlukları sadeleştir: \s+ -> tek boşlukla değiştir
Python’da kullanım
import re
metin = "Sipariş no: 10234, tutar: 149 TL"
sayilar = re.findall(r"\d+", metin) # ['10234', '149']
m = re.search(r"tutar:\s*(\d+)", metin)
if m: print(m.group(1)) # 149
İpuçları
- regex101.com sitesinde desenini canlı test et; her parçanın ne yaptığını açıklıyor.
- E-posta gibi karmaşık şeyleri %100 doğrulamaya çalışma; “yeterince iyi” desen + sunucuda gerçek kontrol daha sağlıklı.
- Açgözlü (
.*) yerine çoğu zaman cimri (.*?) istersin; biri her şeyi yutar, diğeri en azını alır.
Çözemediğiniz bir deseni buraya yazın, birlikte kuralım.