Yeni Başlayanlar İçin Regex: Düzenli İfadeler Nasıl Yazılır
Yeni Başlayanlar İçin Regex
Düzenli ifadeler (regular expressions — regex), metni tanımlayan desenlerdir. Regex ile dizelerde arama yapabilir, girdi doğrulayabilir, veri çıkarabilir ve tek bir kompakt ifade kullanarak karmaşık bul ve değiştir işlemleri gerçekleştirebilirsiniz. Temel bilgileri anladığınızda, regex programlama araç setinizdeki en güçlü araçlardan biri haline gelir.
Düzenli İfade Nedir?
Bir regex, bir arama deseni tanımlayan karakter dizisidir. \d{3}-\d{2}-\d{4} deseni bir ABD Sosyal Güvenlik numarasını eşleştirir: üç rakam, tire, iki rakam, tire, dört rakam.
Regex motorları neredeyse tüm programlama dillerinde yerleşik olarak bulunur — JavaScript, Python, Java, Ruby, Go — hepsinde yerleşik destek vardır.
Sabit Karakterler
Çoğu karakter kendini eşleştirir. cat deseni, göründüğü her yerde "cat" dizesini olduğu gibi eşleştirir.
Pattern: cat
Matches: "cat" in "The cat sat on the mat."
Matches: "cat" in "catalog"
Sabit eşleştirme basittir ancak sınırlıdır. Asıl güç metakarakterlerden gelir.
Metakarakterler
Bu karakterler özel anlam taşır ve olduğu gibi eşleştirilmek için \ ile kaçış karakteri kullanılması gerekir:
. ^ $ * + ? { } [ ] \ | ( )
Karakter Sınıfları
Karakter sınıfları, bir kümeden bir karakter eşleştirir.
Köşeli Parantez Gösterimi
| Desen | Eşleşme |
|---------|---------|
| [aeiou] | Herhangi bir sesli harf |
| [0-9] | Herhangi bir rakam |
| [a-zA-Z] | Herhangi bir harf |
| [^0-9] | Rakam OLMAYAN herhangi bir karakter |
Ön Tanımlı Sınıflar
| Kısaltma | Açıklama |
|-----------|-------------|
| \d | Herhangi bir rakam ([0-9] ile aynı) |
| \w | Harf, rakam veya alt çizgi |
| \s | Boşluk, sekme, satır sonu |
| \D | Rakam olmayan herhangi bir karakter |
| \W | Sözcük karakteri olmayan herhangi bir karakter |
| \S | Boşluk olmayan herhangi bir karakter |
| . | Satır sonu hariç herhangi bir karakter |
Niceleyiciler
Niceleyiciler, önceki öğenin kaç kez görünmesi gerektiğini kontrol eder.
| Niceleyici | Anlamı | Örnek | Eşleşme |
|------------|---------|---------|---------|
| * | Sıfır veya daha fazla | a* | "", "a", "aa" |
| + | Bir veya daha fazla | a+ | "a", "aa", "aaa" |
| ? | Sıfır veya bir | colou?r | "color", "colour" |
| {3} | Tam olarak N | \d{3} | "123" |
| {2,4} | N ile M arası | \d{2,4} | "12", "123", "1234" |
Örnekler
\d+ → "Answer is 42" içinde "42"
https?:// → "http://" ve "https://"
Çapalar
Çapalar, karakterleri değil konumları eşleştirir.
| Çapa | Anlamı |
|--------|---------|
| ^ | Dize başlangıcı |
| $ | Dize sonu |
| \b | Sözcük sınırı |
| \B | Sözcük sınırı olmayan |
^hello → "hello"yu yalnızca başlangıçta eşleştirir
end$ → "end"i yalnızca sonda eşleştirir
\bword\b → "word"ü tam bir sözcük olarak eşleştirir, "sword" içinde değil
Gruplar ve Alternatif
Yakalama grupları ( ) eşleşen kısımları çıkarır:
(\d{3})-(\d{4}) → "555-1234", grup 1'de "555", grup 2'de "1234" yakalanır
Yakalamayan gruplar (?: ) çıkarmadan gruplandırır:
(?:https?|ftp):// → "http://", "https://", "ftp://"
Alternatif | VEYA işlevi görür:
cat|dog|bird → "cat", "dog" veya "bird" ile eşleşir
Pratik Regex Örnekleri
| Kullanım Durumu | Desen |
|----------|---------|
| ABD telefonu | \d{3}-\d{3}-\d{4} |
| E-posta (basit) | \S+@\S+\.\S+ |
| IP adresi | \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} |
| Hashtag | #[a-zA-Z]\w* |
| Saat (SS:DD) | [01]\d|2[0-3]:[0-5]\d |
Regex Deseni Nasıl Test Edilir
Desenleri her zaman etkileşimli olarak test edin:
- Regex deseninizi girin.
- Bir test dizesi girin.
- Hangi kısımların gerçek zamanlı olarak eşleştiğini görün.
- Ayarlayın ve tekrarlayın.
Desenlerle deneme yapmak için regex test aracını kullanın. Eşleşmeleri vurgular, yakalama gruplarını gösterir ve ifadenizin her bir parçasının tam olarak ne yaptığını anlamanıza yardımcı olur.