Regular Expressions
-
Upload
volkan-orhan -
Category
Documents
-
view
22 -
download
4
Transcript of Regular Expressions
Regular ExpressionsVolkan Orhan
IBTech / Finansbank
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
• 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?
• Text dosyalariniformatlama
• Text dosyalarinda aramayapma
• Yazilimlarimizdakullanicinin text girislerinikontrol etme ve dogrulama
• Daha esnek kontrolleryapma
• Veritabanlarinda dahaesnek aramalar yapma
• …
•RegEx’in Kullanim Alanlari
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
ilk Kuralimiz: Harf Eslesmesi
•Regular Expressions Kurallari
Bu cumle ayni zamanda bir Regular Expression’dir
“Herhangi bir karakter” Eslesmesi
•Regular Expressions Kurallari
Bu cumle ayni z.ma.da b.r R.gular .xpression’dir
Ozel Karakterlerin Eslesmesi
•Regular Expressions Kurallari
Bu cumle ayni z.ma.da b.r R.gular .xpression’dir\.
Ozel Karakterlerin Eslesmesi
•Regular Expressions Kurallari
Belirtilen Karakterlerden Herhangi Birisinin
Eslesmesi
•Regular Expressions Kurallari
[Rr]eg[Ee]x
Karakter Araliginin Kullanilmasi
•Regular Expressions Kurallari
[ns]a[0-9]\.xls
Karakter Araliginin Kullanilmasi
•Regular Expressions Kurallari
Belirtilen Karakterlerin Disindaki Karakterler
•Regular Expressions Kurallari
Metakarakterlerin Kullanilmasi
•Regular Expressions Kurallari
Metakarakterlerin Kullanilmasi
•Regular Expressions Kurallari
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.
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.
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.
Tekrarli Eslesme – Bir Yada Daha Fazla (+)
•Regular Expressions Kurallari
Tekrarli Eslesme – Sifir Yada Daha Fazla (*)
•Regular Expressions Kurallari
Tekrarli Eslesme – Sifir Yada Bir Defa (?)
•Regular Expressions Kurallari
Tekrarli Eslesme – Aralik Belirterek
•Regular Expressions Kurallari
Tekrarli Eslesme – Aralik Belirterek
•Regular Expressions Kurallari
Tekrarli Eslesme – Miktar Belirterek
•Regular Expressions Kurallari
Kelime Sinirlarini Belirtmek (\b)
•ileri Duzey Regular Expressions Kurallari
Kelime Sinirlarinin Negatifini Belirtmek (\B)
•ileri Duzey Regular Expressions Kurallari
• ^ 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.
• 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.
• 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)
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)
• 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
• 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
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.
• 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
• 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
• 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.
• 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
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
Tesekkurler
Volkan OrhanCash Management / IBTech