🔤 Düzenli İfadelerin Tanımı
Düzenli ifade (regular expression), dil tanımlayıcı ifadedir. Düzenli ifadeler ile tanımlanan diller düzenli diller (regular languages) olarak adlandırılmaktadır.
Temel Kavramlar
- ε (epsilon): Boş kelime
- ∅ (phi): Boş dil
- a ∈ Σ: Tek sembol (alfabe elemanı)
⚡ Düzenli İfadelerin Operatörleri
1. Birleştirme (Concatenation)
İki düzenli ifadeyi ardışık olarak birleştirir.
Notasyon: xy veya x·y
Örnek: Σ = {a,b} için ab = {"ab"}
2. Birleşim (Union)
İki düzenli ifadeden en az birini sağlayan kelimeler.
Notasyon: x|y veya x+y
Örnek: a|b = {"a", "b"}
3. Yıldız (Kleene Star)
Bir sembolün sıfır veya daha fazla kez tekrarlanması.
Notasyon: x*
Örnek: a* = {ε, a, aa, aaa, ...}
4. Artı (Kleene Plus)
Bir sembolün bir veya daha fazla kez tekrarlanması.
Notasyon: x+
Örnek: a+ = {a, aa, aaa, ...}
5. Parantez
Operatör önceliğini belirlemek için kullanılır.
Notasyon: (x)
Örnek: (ab)* = {ε, ab, abab, ababab, ...}
📝 Düzenli İfade Kuralları
Eğer r ve s düzenli ifadeler ise:
- (r)(s) = rs → düzenli ifadedir
- (r)|(s) = r+s → düzenli ifadedir
- (r)* → düzenli ifadedir
🔍 Düzenli İfade Örnekleri
Örnek 1: Basit Tekrarlar
Σ = {x} olmak üzere:
L = {ε, x, xx, xxx, xxxx, .....}
Düzenli ifade: x*
Açıklama: x sembolünün 0 veya daha fazla tekrarı
Örnek 2: Sabit Desen
Σ = {a,b} olmak üzere:
L = {a, ab, abb, abbb, abbbb, .....}
Düzenli ifade: ab*
Açıklama: a ile başlayan, sonrasında 0 veya daha fazla b
Örnek 3: Alternatif Desenler
Σ = {a,b} olmak üzere:
L = {ε, ab, abab, ababab, ......}
Düzenli ifade: (ab)*
Açıklama: ab deseninin 0 veya daha fazla tekrarı
Örnek 4: Karmaşık Desen
Σ = {a,b} olmak üzere:
L = {a, b, aa, ab, ba, bb, aaa, ...}
Düzenli ifade: (a|b)*
Açıklama: a veya b'nin herhangi bir kombinasyonu
Örnek 5: Sayısal Desenler
Σ = {0,1} olmak üzere:
L = 01 ile biten tüm ikili dizgiler
Düzenli ifade: (0|1)*01
Açıklama: Herhangi dizgi + 01
🔧 Düzenli İfadelerin Özellikleri
Kapalılık Özellikleri
Düzenli diller aşağıdaki işlemler altında kapalıdır:
- Birleşim: Eğer L₁ ve L₂ düzenli ise, L₁ ∪ L₂ düzenli
- Birleştirme: Eğer L₁ ve L₂ düzenli ise, L₁L₂ düzenli
- Yıldız: Eğer L düzenli ise, L* düzenli
- Kesişim: Düzenli diller kesişim altında kapalı DEĞİL
- Tümleme: Düzenli diller tümleme altında kapalı DEĞİL
Karar Özellikleri
- Boşluk Problemi: L = ∅ mı? → Karar verilebilir
- Üyelik Problemi: w ∈ L mi? → Karar verilebilir
- Eşitlik Problemi: L₁ = L₂ mı? → Karar verilebilir
💻 Uygulama Alanları
Programlama ve Yazılımlar
- Metin Düzenleyiciler: Bul/Değiştir işlemleri
- Derleyiciler: Token tanıma (lexical analysis)
- Veri Doğrulama: E-posta, telefon, tarih formatları
- Web Geliştirme: Form validasyonları
Günlük Hayatta
- Arama Motorları: Pattern-based arama
- Biyoinformatik: DNA dizilim analizi
- Ağ Güvenliği: Intrusion detection
- Doğal Dil İşleme: Tokenization
📝 Bilgi Testi - Modül 2
Düzenli ifadeler konusundaki bilginizi test edin.
1. Aşağıdakilerden hangisi düzenli ifade operatörü değildir?
2. Σ = {a,b} için (ab)* düzenli ifadesi hangi dili tanımlar?
3. Düzenli diller hangi işlem altında kapalı değildir?
4. a+ düzenli ifadesi ne anlama gelir?
5. Düzenli ifadelerde ε sembolü neyi temsil eder?
6. Σ = {0,1} için (0|1)*01 ifadesi hangi dili tanımlar?
7. Düzenli ifadelerde üyelik problemi karar verilebilir mi?
8. ab* ifadesi Σ = {a,b} için hangi dili tanımlar?
9. Düzenli ifadelerin en yaygın uygulama alanı nedir?
10. (a|b)* ifadesi ne üretir?
💡 Flashcard'lar - Modül 2
Düzenli ifadeler konusundaki önemli kavramları tekrar edin.