regular expressions

39
Regular Expressions Volkan Orhan IBTech / Finansbank

Upload: volkan-orhan

Post on 15-Aug-2015

26 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Regular Expressions

Regular ExpressionsVolkan Orhan

IBTech / Finansbank

Page 2: Regular Expressions

Denemeler

Regular Expressions’i nerelerde kullaniriz, yaptigimiz

islerde ne gibi yararlar saglar?

Regular Expressions’i ogrenmeye baslayalim

•Regular Expressions’a HosgeldinizSunumumuzda neler yapacagiz?

Regular Expressions Nedir?

Regular Expressions’in ileri duzeydeki kurallarini

ogrenelim

Regular Expressions’i birlikte kullanmaya

baslayalim

RegEx Nedir

Kullanim

Alanlari

Kurallari

ileri Duzey

RegEx

Page 3: Regular Expressions

• Harf dizisini ifade edebilecegimiz

matematiksel bir dildir

• RegEx kullanarak herhangi bir harf

dizisini kesin bir bicimde betimleriz.

Bu betimleme hangi karakterden

sonra ne gelecegini, kac tane

olacagini, oncesinde ne olacagini

belirtmek seklinde olabilir.

• RegEx ile betimledigimiz harf dizisini

istedigimiz sekilde kullanabiliriz

• RegEx destekleyen sistemler (yazilim,

library yada programlama dilleri)

bize tanimladigimiz RegEx ile arama,

degistirme, filtreleme, referans alma

gibi olanaklar sunar.

•Regular Expressions Nedir?Neden Regular Expressions Diyoruz?

Page 4: Regular Expressions

• Text dosyalariniformatlama

• Text dosyalarinda aramayapma

• Yazilimlarimizdakullanicinin text girislerinikontrol etme ve dogrulama

• Daha esnek kontrolleryapma

• Veritabanlarinda dahaesnek aramalar yapma

• …

•RegEx’in Kullanim Alanlari

Page 5: Regular Expressions

Kurallar Nasil Isleme Alinir?

Regular Expression kurallarimiz verilen

metin bloguyla iki sekilde isleme alinabilir.

• Metin blogu tamamen Regular

Expressionimizla eslestirilir, islem sonucu

bize olumlu yada olumsuz olarak

bildirilir.

• Blok icerisinde aramalar yapilarak

Regular Expressionimiz ile eslesen

kisimlar elde edilir (kullanilan araca

gore isaretlenebilir, sirayla eslesen

kisimlar alinabilir, yada ilki alinabilir).

•Regular Expressions Kurallari

Page 6: Regular Expressions

ilk Kuralimiz: Harf Eslesmesi

•Regular Expressions Kurallari

Bu cumle ayni zamanda bir Regular Expression’dir

Page 7: Regular Expressions

“Herhangi bir karakter” Eslesmesi

•Regular Expressions Kurallari

Bu cumle ayni z.ma.da b.r R.gular .xpression’dir

Page 8: Regular Expressions

Ozel Karakterlerin Eslesmesi

•Regular Expressions Kurallari

Bu cumle ayni z.ma.da b.r R.gular .xpression’dir\.

Page 9: Regular Expressions

Ozel Karakterlerin Eslesmesi

•Regular Expressions Kurallari

Page 10: Regular Expressions

Belirtilen Karakterlerden Herhangi Birisinin

Eslesmesi

•Regular Expressions Kurallari

[Rr]eg[Ee]x

Page 11: Regular Expressions

Karakter Araliginin Kullanilmasi

•Regular Expressions Kurallari

[ns]a[0-9]\.xls

Page 12: Regular Expressions

Karakter Araliginin Kullanilmasi

•Regular Expressions Kurallari

Page 13: Regular Expressions

Belirtilen Karakterlerin Disindaki Karakterler

•Regular Expressions Kurallari

Page 14: Regular Expressions

Metakarakterlerin Kullanilmasi

•Regular Expressions Kurallari

Page 15: Regular Expressions

Metakarakterlerin Kullanilmasi

•Regular Expressions Kurallari

Page 16: Regular Expressions

Buradaki tablomuzdametakarakterlerin ne amaclakullanildigini liste halindegorebilirsiniz. Bu listeyiezberlemeniz Regular Expressions’u cok rahat birbicimde kullanmanizisaglayacaktir.

•Regular Expressions KurallariMetakarakterlerin Kullanilmasi

Metakarakter Aciklama

. "\n“ disindaki herhangi bir karakter ile eslesir.

[xyz] Bir karakter kumesi. Kumedeki karakterlerden birisiyle eslesir.

[^xyz]Negatif bir karakter kumesi. Kumede olmayan herhangi bir karakter

ile eslesir.

[a-z]Bir karakterler araligidir. Aralikta belirtilen herhangi bir karakter ile

eslesir.

[^a-z]Bir negatif karakterler araligidir. Aralikta belirtilmemis olan herhangi

bir karakter ile eslesir.

\d Bir rakam ile eslesir.

\D Rakam olmayan bir karakter ile eslesir.

\f Bir form-feed karakteri ile eslesir.

\n Bir yeni satir (newline) karakteri ile eslesir.

\r Bir carriage return karakteri ile eslesir.

\s Bir beyaz bosluk (bosluk, tab, form-feed, vs) karakteri ile eslesir .

\S Beyaz bosluk olmayan bir karakter ile eslesir.

Page 17: Regular Expressions

Metakarakter tablomuzundevami

•Regular Expressions KurallariMetakarakterlerin Kullanilmasi

Metakarakter Aciklama

\t Tab karakteriyle eslesir.

\v Dikey tab karakteriyle eslesir.

\w Altcizgi dahil herhangi bir kelime karakteri ile eslesir.

\W Herhangi bir kelime karakteri olmayan karakter ile eslesir.

\unUnicode karakter olan n ile eslesir (n burada 4 tane hexadecimal

rakam ile ifade edilir). Ornegin \u00A9 copyright sembolu ile eslesir.

\bKelime sinirlari, yani bir kelime ile bir bosluk arasindaki pozisyon ile

eslesir.

\BKelime sinirlari disindaki seylerle eslesir. Ornegin 'er\B' ifadesi

"verb“ icerisindeki 'er' ile eslesir, fakat "never“ icerisindeki 'er' ileeslesmez.

x|y x yada y ile eslesir.

Page 18: Regular Expressions

Metakarakter tablomuzundevami

•Regular Expressions KurallariMetakarakterlerin Kullanilmasi

Metakarakter Aciklama

\Sonraki karakterin ozel bir karakter, literal, geri referans yada escape

karakteri oldugunu belirtir.

^ Girilen metnin baslangic pozisyonuyla eslesir.

$ Girilen metnin bitis pozisyonuyla eslesir.

* Takip ettigi alt ifadeyle sifir yada daha fazla defa eslesir.

+ Takip ettigi alt ifadeyle bir yada daha fazla defa eslesir.

? Takip ettigi alt ifadeyle sifir yada bir defa eslesir.

{n}Takip ettigi alt ifadeyle tam olarak n defa eslesir. Burada n bir dogal

sayidir.

{n,}Takip ettigi alt ifadeyle en az n defa eslesir. Burada n bir dogal

sayidir.

{,m}Takip ettigi alt ifadeyle en fazla m defa eslesir. Burada m bir dogal

sayidir.

{n,m}Takip ettigi alt ifadeyle en az n, en fazla m defa eslesir. Burada n ve

m birer dogal sayidir ve n <= m olmalidir.

Page 19: Regular Expressions

Tekrarli Eslesme – Bir Yada Daha Fazla (+)

•Regular Expressions Kurallari

Page 20: Regular Expressions

Tekrarli Eslesme – Sifir Yada Daha Fazla (*)

•Regular Expressions Kurallari

Page 21: Regular Expressions

Tekrarli Eslesme – Sifir Yada Bir Defa (?)

•Regular Expressions Kurallari

Page 22: Regular Expressions

Tekrarli Eslesme – Aralik Belirterek

•Regular Expressions Kurallari

Page 23: Regular Expressions

Tekrarli Eslesme – Aralik Belirterek

•Regular Expressions Kurallari

Page 24: Regular Expressions

Tekrarli Eslesme – Miktar Belirterek

•Regular Expressions Kurallari

Page 25: Regular Expressions

Kelime Sinirlarini Belirtmek (\b)

•ileri Duzey Regular Expressions Kurallari

Page 26: Regular Expressions

Kelime Sinirlarinin Negatifini Belirtmek (\B)

•ileri Duzey Regular Expressions Kurallari

Page 27: Regular Expressions

• ^ isareti bize bu RegEx’in eslestirilecek

metnin sadece baslangic kisminda

eslesebilecegini belirtir.

• ^ isareti RegEx’in baslangicina yazilir

• $ isareti bize bu RegEx’ineslestirilecek metnin sadecebitisinde eslesebilecegini belirtir

• $ isareti RegEx’in sonuna yazilir

•Ileri Duzey Regular Expressions KurallariMetin Sinirlarini Belirtmek (^ ve $)

• Bazi yazilimlarda ^ bize satir basini, $ ise

satir sonunu belirtmek icin kullanilir. Satir

satir arama ve degistirme yaparken de

bu sekilde kullanacagiz.

Page 28: Regular Expressions

• RegEx’te Ifade Grubu olusturmak

icin parantez isaretlerini kullaniriz

• Her parantez ikilisi icerisindeki RegEx

bir ifade grubu olusturur

• Ifade gruplarini bir karakter gibi

kullanabiliriz

• Ornegin ifade grubunun yanina miktar

belirten {x,y} metakarakterlerini

ekleyebiliriz, yada + ekleyebiliriz

•Ileri Duzey Regular Expressions KurallariIfade Gruplari (Alt-ifadeler) Kullanmak

Not: ifade gruplari icerisinde sapka isareti (^)

kullanimi seklinde bir kullanim yoktur. Herhangi bir

ifadeyi yada ifade grubunu olumsuz yapmak

matematiksel nedenlerden dolayi tanimlanmamistir.

Page 29: Regular Expressions

• Ifade gruplarini geri-referans olarakkullanmak istedigimizda \1 \2 gibirefere edebiliriz

• Her parantez icerisindeki RegEx birifade grubu olusturur

• \0 eslesen tum metni belirtmek icinkullanilir

• RegEx icerisinde belirttigimiz her bir ifadegrubu ayni zamanda birer referanstir ve sirasiyla soldan saga dogru referansnumarasi vardir.

• Orneginthis (\w+) is a (\w+) \1RegEx’inde iki tane grup vardir ve sondaki\1 bu ilk grubun aynisini belirtir (birebir aynikarakterler eslesir)

• RegEx’te yazdigimiz gruplari RegEx desteklitext editorumuzun replace fonksiyonuylageri refere edip dosyamizi istedigimiz gibiformatlayabiliriz, bu cok pratik bir kullanimseklidir. Bazi editorlerde geri referans icin\ isareti yerine $ isareti kullanilir.

•Ileri Duzey Regular Expressions KurallariGeri-Referanslar ile Eslestirme (Backreference)

Page 30: Regular Expressions

Tablodaki donusum

karakterleri text editorun

replace kisminda kullanilir.

Ornegin replace kisminda

$1\U$2\E$3 seklinde

yazdigimiz RegEx birinci

gerireferansi yazar, ikinci

gerireferansi buyuk harfe

donusturup yazar, sonra

ucuncu gerireferansi yazar

•Ileri Duzey Regular Expressions KurallariBuyuk-Kucuk Harf Donusumleri

Metakarakter Aciklama

\E\L veya \U donusum islemini sonlandirir

(end)

\lSonraki karakteri kucuk harfe donusturur

(lowercase)

\L\E’ye kadar olan tum karakterleri kucuk

harfe donusturur (lowercase)

\uSonraki karakteri buyuk harfe donusturur

(uppercase)

\U\E’ye kadar olan tum karakterleri buyuk

harfe donusturur (uppercase)

Page 31: Regular Expressions

• RegEx’imize ileri ve geribakma ifadeleri ekleyerekRegEx’imizin ana kismininyaninda yan taraflarinda(ileri ve gerisinde) belirttigimiz kisimlarinin da eslesmesini saglayabiliriz.

• Ileri ve geri bakmayikullandigimiz zamaneslesen kisimlar anaifadenin yaninda ileri vegeri bakilan kisimlarolmasina ragmen eldeedecegimiz kisim sadeceana kisimdir.

ileri ve Geri Bakma

•Ileri Duzey Regular Expressions Kurallari

Page 32: Regular Expressions

• Ileri bakmak icin ?=

metakarakterini kullaniriz.

Ornegin

.+(?=:)

ifadesi bize : karakterinden

onceki kismi verir.

• Geri bakmak icin ?<=

metakarakterini kullaniriz.

Ornegin

(?<=\$)[0-9.]+

ifadesi bize $ isaretinden

sonraki kismi verir (ana

ifadeden once $ isareti

geldigi belirtilmis burada).

ileri ve Geri Bakma

•Ileri Duzey Regular Expressions Kurallari

Page 33: Regular Expressions

ileri ve Geri Bakma

•Ileri Duzey Regular Expressions Kurallari

• Ileri bakma ifadeleri degiskenuzunlukta olabilir; . ve + icerebilir ornegin. Bu da cokdinamik olmasini saglar.

• Geri bakma ifadeleri isegenellikle sabit uzunluktaolmak zorundadir. Bu kisitlamacogu RegEx implementasyonutarafindan uygulanmaktadir.

Page 34: Regular Expressions

• Ileri ve geri bakma

ifadelerini negatif hale

cevirmek icin = isareti

yerine ! Isreti kullaniriz.

• Negatif ileri ve geri

bakma ana ifadenin

eslesmesi sartinin

yaninda ilerideki yada

gerideki bakilan kismin

eslesmemesi gerektigi

sartini belirtir.

Negatif ileri ve Geri Bakma

•Ileri Duzey Regular Expressions Kurallari

Page 35: Regular Expressions

• Kosul kullanmak icin soru

isaretinin yanina parantez

icinde eslesme durumunu

(geri referans yada

ileri/geri bakma), parantez

disina da eslesme

durumunda ne gelecegini

yazariz. Istersek daha sonra

yanina pipe (|) isareti

ekleyerek eslesmeme

durumunda ne gelecegini

de yazabiliriz. En son da

kosul belirten RegEx’imizi

parantez icine aliriz.

Kosul Kullanimi

•Ileri Duzey Regular Expressions Kurallari

Page 36: Regular Expressions

• Kosul kullanirken

parantez icerisine

yazacagimiz eslesme

durumu olarak ileri/geri

referans numarasini

yazabiliriz. Bu durumda

geri referansi \ isaretiyle

escapelemeye gerek

yoktur.

Kosul Kullanimi

•Ileri Duzey Regular Expressions Kurallari

• Ornegin

(\()?\d{3}(?(1)\)|-)\d{3}-\d{4}

ifadesi eger ( isareti varsa ) isareti gelmesi

gerektigini, aksi durumda – isareti gelmesi

gerektigini belirtir.

Page 37: Regular Expressions

• Kosul kullanirken parantezicerisine yazacagimizeslesme durumu olarak ileriyada geri bakmametakarakterleriniyazabiliriz.

• Ornegin\d{5}(?(?=-)-\d{4})ifadesi 5 tane digittensonra (ileri bakinca) egerbir tane eksi isareti varsa birtane eksi isareti (oncekieksi isareti) ve 4 tanerakam gelmesi gerektiginibelirtir.

Kosul Kullanimi

•Ileri Duzey Regular Expressions Kurallari

Page 38: Regular Expressions

Regular Expressions denemelerini Notepad++, TextPad gibi

text editorlerinde, Eclipse gibi RegEx destekleyen IDE’lerde,

yada Internette bolca bulunan RegEx tester yazilimlariyla

yapabilirsiniz. Bu sunumumuzda da Notepad++ uzerinde

RegEx search&replace denemeleri yapacagiz.

•Regular Expression Denemeleri

Page 39: Regular Expressions

Tesekkurler

Volkan OrhanCash Management / IBTech