Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Slides:



Advertisements
Benzer bir sunumlar
DÜZENLİ İFADELER Regular Expressions Edip Serdar GÜNER.
Advertisements

DÜZENLİ İFADELER Regular Expressions.
Sözcüksel Çözümleme/Analiz (Lexical Analysis)
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
SAYISAL DEVRELER BÖLÜM-2 Sayı Sistemleri ve Kodlar
Dosya Yönetimi Dosya, Klasör ve Sürücüler HÜSEYİN ALİOSMANOĞLU.

% A10 B20 C30 D25 E15 Toplam100.  Aynı grafik türü (Column-Sütun) iki farklı veri grubu için de kullanılabilir. 1. Sınıflar2. Sınıflar A1015 B20 C3015.
İNŞAAT TEKNOLOJİSİ UYGULAMALARI I
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA MATLAB Yrd.Doç.Dr. Cengiz Tepe.
1. Ders Bir, İki ve Üç Yazarlı Eserlerin Kataloglanması Prof. Dr. Bülent Yılmaz Arş. Gör. Tolga Çakmak.
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
İNSAN BİLGİSAYAR ETKİLEŞİMİ: BİLİŞSEL BOYUT III. İBE alanında etkileşimi anlamaya çalışan uzmanlar, özellikle şema ve zihinsel modeller üzerinde yoğunlaşırlar.
MED 167 Making Sense of Numbers Değişkenlik Ölçüleri.
Literatür taramasının önemi  Daha önce neler yapıldığını çıkarmaya çalışmayan araştırmacılar alanlarında önemli katkı sağlama fırsatından yoksun kalırlar.
OLASILIK TEOREMLERİ Permütasyon
MATEMATİK PROJE ÖDEVİ Adı-Soyadı:Nihat ELÇİ Sınıfı-Numarası:7/C 1057
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
ÖZEL TANIMLI FONKSİYONLAR
ÇOK BOYUTLU SİNYAL İŞLEME
Emine Hoşoğlu doğan İstanbul şehir üniversitesi Eylül 2014
KONULAR BÖLÜM: Kesirler, Ondalık Kesirler, Yüzde
Excel 2007.
11. SINIF: ELEKTRİK ve MANYETİZMA ÜNİTESİ Alternatif Akım 1
TABLO ve GRAFİK YAPIM YÖNTEMİ
Formel Diller ve Soyut Makineler
Elektriksel potansiyel
Ders 14 Matematik becerileri
PROGRAMLI ÖĞRETİM Tanımı:
Sıklık Dağılımları Yrd. Doç. Dr. Emine Cabı.
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
10. HAFTA TUR181 TÜRK DİLİ l.
TERCİH VE YERLEŞTİRME İŞLEMLERİ 2017
TAM SAYILAR.
NELER ÖĞRENECEĞİZ 1-Doğru ile nokta arasındaki ilişkiyi açıklamayı
RİZE ÜNİVERSİTESİ EĞİTİM FAKÜLTESİ İLKÖĞRETİM MATEMATİK ÖĞRETMENLİĞİ
APARTMANLAR OYUNU NEDİR?
PROGRAMLAMA TEMELLERİ
Öğr. Gör. Mehmet Ali ZENGİN
DOĞAL SAYILAR TAM SAYILAR
BİLİŞİM SİSTEMLERİ GÜVENLİĞİ (2016)
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
NBP103 Programlama Temelleri Öğr. Gör. Mahmut Kılıçaslan
DOSYA BÜYÜKLÜKLERİ İkili Sistem Dosya Büyüklükleri ve Hesaplamalar
Klavye Kullanımı.
Tez Veri Girişi Ulusal Tez Merkezine, Tez Döneminde olan ve Danışmanı ile Tez konusunu belirleyip, Enstitümüzün onayından geçen tüm öğrenciler giriş yapmak.
KÜMELER HAZIRLAYAN : SELİM ACAR
Dosya, Klasör ve Sürücüler
BİLİMSEL ARAŞTIRMA TEKNİKLERİ VE ETİĞİ Latex Editörü ve Kullanımı-2
İSTATİSTİK Yrd. Doç. Dr. Cumhur TÜRK
Bilgisayar Mühendisliğine Giriş
Bölüm 7 İfadeler ve atamalar.
TOPLU POSTALAMA İŞLEMİ İÇİN ETİKET OLUŞTURMA VE YAZDIRMA
İNTERNET PROGRAMCILIĞI 2
Bilgisayar Bilimi Koşullu Durumlar.
Sonlu Özdevinirlere Giriş
Bilgisayar II 8 Mart Mart
NİŞANTAŞI ÜNİVERSİTESİ
Değerler ve Değişkenler
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
Düzenli Dillerin Kapalılık Özellikleri
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
Tanımlar Sonlu Özdevinirlerle Eşdeğerlik
Ortam-Bağımsız Gramerler (OBG)
Bilimsel bir Bildiri veya Makale Nasıl Yazılır ve Yayımlanır?
Sunum transkripti:

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü Düzenli Diller ve İfadeler Doç.Dr.Banu Diri Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü Chomsky Hiyerarşisi Özyinelemeli Sayılabilir Diller (Recursively Enumerable) Karmaşıklık Bağlama Bağımlı Diller (Context - Sensitive) Bağlamdan Bağımsız Diller (Context-Free) Düzenli Diller (Regular) 1 2 3 Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü Sonlu Durum Otomatları (FSAs) q0 q1 q2 q3 q4 m e ! q0 q1 q2 q3 q4 m e ! ε Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü Düzenli Diller Σ sonlu bir alfabe ∅ boş küme ε, {ε} kümesini göstermek üzere; Σ üzerinde tanımlanabilen düzenli dillerin formel tanımı: ∅ düzenli bir dildir.  A Є  Uε , {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 veya kesişim (union, disjunction), L1* ise Kleene sonlandırması (Kleene closure) ile tanımlanan diller de düzenli dillerdir. Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü Uygulama 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) … Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü Düzenli İfadeler (Regular Expressions-Regex – Regexp) 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. Herhangi bir düzenli ifade doğrudan NFSA’ya, buradan da DFSA’ya dönüştürülebilir. Regex Nerelerde Kullanılır ? Nasıl yazıldığından emin olamadığımız bir kelimeyi aratırken. “Scholarships” kelimesini arayalım, ancak harflerin yerinden emin değiliz. İlk, son ve bir kaç karakteri verip arama yapabiliriz. Belirli kalıpları arayabiliriz. http:// ile başlayan ve arada noktalar içeren adresleri Kullanıcıdan alınan bir bilginin belli bir format yapısına uyup uymadığını kontrol edebiliriz. Kullanıcılardan e-posta adresi girmelerini isteyip, girilen adresin geçerli bir e-posta adresi olup olmadığını kontrol edebiliriz.(@ işareti içerecek, belli karakterlerden oluşacak, ikinci blokta en az bir nokta olacak ...) Kullanım Alanları vi, emacs, kate, ... metin düzenleyicilerde grep, sed,... konsol uygulamalarında Perl, Python, PHP, JavaScript,... programlama dillerinde Eclipse, Visual Studio, ... geliştirme ortamlarında Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü Kısaca, bir yazının içerisinden istediğimiz bir bilgiyi bulmak ve/veya değiştirmek için kullanılır. En basit düzenli ifadeler karakterlerin sıralı biçimde dizilmesiyle oluşur. Düzenli ifadeler büyük – küçük harfe duyarlıdır. okula  ‘Ali okula gelmedi.’ okul  ‘Ali okula gelmedi.’ a  ‘Ali okula gelmedi.’ /okula gelmedi/  ‘Ali okula gelmedi.’ Örneklerde, boşluk karakteri yerine “•” kullanılacaktır. Doğal•Dil •İşleme Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü REGEX – Satır Başı ^ ve Satır Sonu $ ^ işareti satır başlarını, $ işareti satır sonlarını gösterir. ^Banu : Satır başlarındaki “Banu“ ları bulur. Banu$ : Satır sonlarındaki “Banu“ ları bulur. ^Banu$ : Aynı anda hem satır başında, hem de satır sonunda yer alan “Banu“ ları bulur. Sadece “Banu” yazan satırları bulur. ^$ : Satır başından hemen sonra gelen satır sonlarını bulur. Yani boş satırları bulur. Örnekler ^gül  gül güler (bulur) songül (bulamaz) gül$  gül songül (bulur) güler (bulamaz) ^gül$  gül (bulur) güler songül (bulamaz) Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü REGEX – Karakter Sınıfları [...] yapısı, REGEX‘te karakter sınıfı olarak bilinir. Örnek: “makina” kelimesini arayalım. Bazen “makine” diye de yazılabilir. Her ikisini de yakalamak istiyorsak: makin[ae] düzenli ifadesini kullanmalıyız. [ds]e[lb]i  sebil delil (bulur)  salim (bulunmaz) [Bb]anu  Banu banu (bulur) HTML belgesi içerisindeki tüm Header elementlerini bulmak istersek yazılacak regex; <h[123456]> <h1>, <h2> … <h6> tüm elementleri bulur. [-] Köşeli parantez içerisinde iki karakter arasında tire (-) işareti varsa, bu iki karakter arasındaki herhangi bir karakterle eşleşme gerçekleşeceğini gösterir. Karakterlerin nasıl dizildiği, yerel ayarlarımıza göre farklılık gösterebilir. <h[1-6]> [0-9] [a-z] [A-z] [a-zA-Z] Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü REGEX – Negatif Karakter Sınıfları [...] yerine [^...] kullanılırsa, belirlediğiniz kriterlere uymayanlar listelenir. [^5-8] regex’i 5 ve 8 arasında olmayan karakterlerle eşleşir. Karakter sınıfının başındaki ^ sembolü, karakter sınıfının içerisindeki karakterleri istemediğinizi bildirir. ^ satır başı ile karıştırılmamalıdır. Kullanıldığı yere göre anlamı değişir. Ardından d harfi gelmeyen türkçe kelimelerini arayalım. regex : türkçe[^d] türkçemiz güzel bir dildir türkçeyi çok bozduk türkçede ses uyumu türkçe Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü ^ karakterinin 3 farklı şekilde kullanımı (özet) 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ü Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü REGEX – Nokta ve ? karakteri Nokta karakteri (.) herhangi bir karakterle eşleşebilir. Joker olarak düşünebiliriz. s.cak diye bir düzenli ifademiz olsun, arama sonucunda neleri bulabilir/bulamayız. sıcak  buluruz sicak  buluruz Sıcak  bulamayız (s büyük harf olarak yazılmış) Yazı içerisindeki noktaları bulmak istersek? noktanın önüne \ işaretini koyarız. Örnek; 193.140.4.1 ve ardından gelen 1 karakter daha olsun. regex: 193\.140\.4\.1. 193.140.4.13  bulunur 193.140.4.1a  bulunur ‘?’ karakteri kendinden önce gelen karakterin seçimlik olduğunu belirtir. evleri?  evler veya evleri colou?r  color veya colour Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

* 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, … abd (bulamaz) [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 YTU .* Kulüpleri  YTU Kulüpleri YTU Öğrenci Kulüpleri Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü İ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. Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü REGEX – Alt İfadeler | veya anlamına gelir. Birden fazla düzenli ifadeyi birleştirip tek bir düzenli ifade oluşturmak için kullanılır. Oluşturulan ifade içerisindeki alt ifadelerden herhangi birini karşılıyorsa sonucu listeler. Bir yazı içerisinde geçen bütün 4. NLP Sempozyumu ifadelerini listelemek isteyelim. Bu ifadenin Dördüncü veya dördüncü NLP Sempozyumu diye de geçebileceğini düşünelim. regex : (Dördüncü|dördüncü|4\.).*Sempozyumu ([Dd]ördüncü|4\.).*[Ss]empozyumu Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü 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 Ateşoğlu kelimesini bulalım. Bunun için regex ihtiyaç yoktur, herhangibir editör bize yardımcı olur. Ancak Ateşoğlu kelimesinden önce 4 karakter ve arkasından da 3 tane rakam geliyor olsun. Bunun için regex yapmamız gerekir. [a-z]{4} [0-9]{3}Ateşoğlu Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

İşlemlerin öncelikleri Yüksekten en düşük işlem önceliğine göre sıralama: Parantez () Sayaçlar * + ? {} Seriler veya bağlayıcılar  evler ^Yarın gelecek$ Veya  | (pipe) Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü

Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü Ö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 Yıldız Teknik Üniversitesi-Bilgisayar Müh. Bölümü