Sunuyu indir
1
DÜZENLİ İFADELER Regular Expressions
2
Chomsky Hiyerarşisi Özyinelemeli Sayılabilir Diller
(Recursively Enumerable) Karmaşıklık Bağlam – Bağımlı Diller (Context - Sensitive) Bağlam – Bağımsız Diller (Context-Free) Düzenli Diller (Regular) 1 2 3
3
Tip – 3 (Type - 3) Gramerler
Düzenli İfadeler Sonlu Durum Otomatları Düzenli Diller
4
Sonlu Durum Otomatları (FSAs)
e ! m e e q0 q1 q2 q3 q4 ! m e e q0 q1 q2 q3 q4 ε
5
Düzenli Diller Σ sonlu bir alfabeyi, ∅ boş kümeyi,
ε, {ε} kümesini göstermek üzere; Σ üzerinde tanımlanabilen düzenli dillerin formel tanımı şöyledir: ∅ düzenli bir dildir. , {a} düzenli bir dildir. Eğer L1 ve L2 dilleri düzenli diller ise: L1 * L2 = { xy | x Є L1, y Є L2} ekleme işlemi (concatenation), L1 U L2 birleşim işlemi (union, disjunction, alternation), L1* ise Kleene sonlandırması (Kleene closure) ile tanımlanan diller de düzenli dillerdir.
6
Düzenli Diller (devam)
b) c)
7
Düzenli İfadeler Karakter dizileri içinde belirli örüntüleri (pattern) aramayı sağlayan bir dildir. İlk olarak 1956 yılında Stephen C. Kleene tarafından formel bir model olarak sunulmuştur. Formel tanım: Karakter katarı kümelerinin cebirsel olarak tanımlanmasını sağlayan bir gösterimdir. Sonlu durum otomatları ile tanınan dilleri ifade edebilme gücüne sahiptirler. Herhangi bir düzenli ifade doğrudan NFSA’ya, buradan da DFSA’ya dönüştürülebilir. NFSA (backtracking), DFSA veya melez yöntemler kullanılarak gerçekleştirimi yapılabilir.
8
Kullanım Alanları Arama motorları Bilgi edinim (Information retrieval)
Kelime işleme (Word processing) Derlem (corpus) içinde frekans hesaplama Veri doğrulama (Data validation) Sözdizim belirginleştirme (Syntax highlighting) …
9
Basit Düzenli İfadeler
En basit düzenli ifadeler karakterlerin sıralı biçimde dizilmesiyle oluşur. Düzenli ifadeler büyük – küçük harf duyarlıdır. /okula/ ‘Ali okula gelmedi.’ /okul/ ‘Ali okula gelmedi.’ /a/ ‘Ali okula gelmedi.’ /okula gelmedi/ ‘Ali okula gelmedi.’
10
Karakter Seçimi ve Aralıklar
Kare parantezler ‘[]’ arasına yazılan karakterler ‘veya’ (disjunction) işlemine tabi olurlar. ‘-’ işareti ile kare parantez içinde aralık (range) belirtilebilir. /[Bb]ahçe/ Bahçe veya bahçe /[abc]/ a, b veya c /[ ]/ herhangi bir rakam /[A-Z]/ Herhangi bir büyük harf /[a-z]/ Herhangi bir küçük harf /[0-9]/ Herhangi bir rakam
11
* ve + (Kleene star and plus)
‘*’ karakteri kendinden önce gelen karakterin 0 veya daha fazla kere ardışık olarak tekrarlandığını belirtir. /ab*c/ ac, abc, abbc, abbbc, … /[0-9][0-9]*/ bir veya daha fazla sayıda ardışık rakam ‘+’ karakteri kendinden önce gelen karakterin 1 veya daha fazla kere ardışık olarak tekrarlandığını belirtir. /[0-9]+/ bir veya daha fazla sayıda ardışık rakam
12
? ve . ‘?’ karakteri kendinden önce gelen karakterin seçimlik olduğunu belirtir. /evleri?/ evler veya evleri /colou?r/ color veya colour ‘.’ karakteri tekil herhangi bir karakterin yerine geçebilir. /dök.e/ dökme veya dövme gibi
13
| (pipe) Bu karakter örüntüler arasında ‘veya’ işlevi görür.
/elma|portakal/ elma veya portakal ‘()’ şeklindeki normal parantezler içine alınan ifadeler tek bir karaktermiş gibi işlenir. /yüz(er|erler)/ yüzer veya yüzerler
14
İfade Sınırları \b özel karakteri, kullanıldığı yere göre, aranan ifadenin önünde veya arkasında sınırlayıcı (boşluk gibi) karakterleri sınır olarak kabul eder. /\beli\b/ önünde ve arkasında boşluk olan ‘eli’ ifadesini bulur \B karakteri sınırlandırma olmayan durumu belirtir.
15
^ (caret) ve $ ^ karakteri 3 farklı şekilde kullanılabilir.
Aralık için olumsuzlama /[^A-Z]/ büyük harf harici karakter /[^Ss]/ S veya s harici karakter /[^\.]/ nokta harici karakter Satır başına bağlama /^Asya/ satır başında ‘Asya‘ olan durum Normal karakter olarak kullanım /[e^]/ e veya ^ /a^b/ a^b örüntüsü $ karakteri ise normal karakter olarak kullanımı haricinde satır sonuna bağlama içinde kullanılır. /gittiler\.$/ satır sonunda ‘gittiler’ olan durum
16
Sayaçlar Herhangi bir karakterin ne miktarda tekrarlanabileceğini belirten ifadelerdir. {n} kendinden önceki karakter n defa ardışık olmalıdır {n, m} kendinden önceki karakter n ile m aralığında ardışık olmalıdır {n,} kendinden önceki karakter en az n kadar ardışık olmalıdır
17
Operatör Öncelik Hiyerarşisi
En yüksekten en düşük öncelikli operatöre doğru sıralama şu şekildedir: Parantez () Sayaçlar * + ? {} Seriler veya bağlayıcılar evler ^Yarın gelecek$ Veya | (pipe)
18
Özel Operatörler \d herhangi bir rakam
\D rakam olmayan bir karakter \w alfanümerik veya boşluk karakteri \W alfanümerik olmayan karakter \s boşluk \S boşluk olmayan karakter \. nokta karakteri \* * (asterisk) karakteri \? ? Karakteri \n newline karakteri \t tab karakteri
19
xkcd.com
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.