Duzenli Ifade Test Araci
Duzenli ifadeler (regex), metin eslestirme icin kullanilan kaliplardir. Bu arac regex sozdizimini analiz eder, kalip bilesenlerini aciklar ve ornek metne karsi eslesmeleri denemek icin bir test alani saglar. JavaScript, PCRE ve Python regex formatlarini destekler.
Spesifikasyonlar
Yaygin Kullanim Alanlari
- Bir regex'in beklenen metinle neden eslesmedigini hata ayiklama
- Aciklamalari gourerek regex sozdizimini ogrenme
- Koda eklemeden once kaliplari test etme
- Form alanlari icin giris kaliplarini dogrulama
- Yapilandirilmis metinden (loglar, CSV, HTML) veri cikarma
Ozellikler
- Regex formatini algilama (JavaScript /pattern/flags, PCRE #pattern#, Python r"pattern")
- Kalip bilesenlerini anlasilir bir dille aciklama
- Eslesme vurgulamasi ile ornek metne karsi test etme
- Tekli eslesme veya tum eslesmeleri bulma modu
- Yakalama gruplarini ve iceriklerini gosterme
- Adlandirilmis yakalama grubu gosterimi
- Eslesme konumlarini ve indekslerini gosterme
- Regex calistirma suresi gosterimi
- Kalip ozellik rozetleri (capalar, nicleyiciler vb.)
- Kalip uyarilari
- Yaygin kalip kutuphanesi (e-posta, URL, telefon vb.)
Ornekler
Ipuclari
- Karmasik kaliplari uretime almadan once cevrimici test araclariyla hata ayiklayin.
- Ozel karakterleri (. ^ $ * + ? { } [ ] \ | ( )) ters egik cizgi ile kacirin.
- Adlandirilmis yakalama gruplari (?<name>...) eslesmeleri daha okunabilir kilar.
- g bayragi tum eslesmeleri bulur; onsuz yalnizca ilk eslesme dondurulur.
- Acgozlu nicleyicilere (* +) dikkat edin; uygun oldugunda tembel olanlari (*? +?) kullanin.
Anlama Duzenli Ifade Test Araci
Duzenli ifadeler (regex), neredeyse her programlama dilinde, metin duzenleyicide ve komut satiri aracinda kullanilan bir kalip eslestirme dilidir. Bir regex, literel karakterler ve dize siniflarini eslestiren metakarakterlerin kombinasyonunu kullanarak bir arama kalibi tanimlar. Giris dogrulama, metin cikarma, arama ve degistirme islemleri ve log analizi icin vazgecilmezdir.
Temel sozdizimi karakter siniflarini ([a-z], \\d, \\w, \\s), nicleyicileri (*, +, ?, {n,m}), capalari (^, $, \\b), degisimi (|) ve parantezlerle gruplamayo icerir. Yakalanan gruplar eslesen alt dizeleri cikarir ve geri basvurulari etkinlestirir. Ileriye bakislar (?=...) ve geriye bakislar (?<=...) karakterleri tuketmeden konumlari eslestirir ve cevreleyen baglam hakkinda karmasik bildirimlere olanak tanir.
JavaScript regex'in belirli bayraklari olan kendi lehcesi vardir: g (global), i (buyuk/kucuk harf duyarsiz), m (cok satirli), s (dotAll), u (Unicode) ve y (yapiskan). u bayragi, Unicode metni dogru sekilde islemek icin giderek daha onemli hale gelmektedir; onsuz kalipler cok baytli karakterleri dogru sekilde eslestiremeyebilir. Adlandirilmis yakalama gruplari (?<name>...) numaralandirilmis gruplara gore okunabilirligi arttirir.
Yaygin regex gorevleri arasinda e-posta dogrulama, URL ayristirma, yapilandirilmis metinden (log dosyalari, CSV) veri cikarma ve kod yeniden duzenlemede kaliplari degistirme yer alir. Ancak regex'in sinirlari vardir — HTML veya JSON gibi ic ice yapilarini ayristiramaz (uygun bir ayristirici kullanin) ve asiri karmasik kalipler okunamaz ve bakimi zor hale gelir. "Simdi iki probleminiz var" espirisi, karmasik regex ile ilgili gercek bakim zorluklarini yansitir.
HTML, duzenli ifadelerin temel olarak isleyemedigi ic ice yapilara sahip baglamdan bagimsiz bir dildir. Bir regex, rastgele ic ice derinligine sahip acilis ve kapanis etiketlerini dogru sekilde eslestiremez. Basit durumlar calisiyor gibi gorunebilir, ancak ic ice etiketler, > iceren nitelikler veya yorumlar iceren kenar durumlarinda basarisiz olur. HTML isleme icin tarayicida DOMParser, Node.js'de cheerio veya Python'da BeautifulSoup gibi bir DOM ayristirici kullanin.
.* (acgozlu) ve .*? (tembel) nicleyiciler arasindaki fark eslestirme davranisi icin onemldir. Acgozlu .* mumkun olan en fazla karakteri eslestirir, ardinda gerekirse geri izleme yapar. Tembel .*? mumkun olan en az karakteri eslestirir. "<b>bir</b><b>iki</b>" gibi bir dizede, acgozlu kalip <b>.*</b> tum dizeyi eslestirirken, tembel kalip <b>.*?</b> yalnizca ilk "<b>bir</b>" kismini eslestirir. Yanlis modu secmek, beklenmeyen regex davranisinin en yaygin nedenlerinden biridir.
JavaScript'te u bayragi (/pattern/u) Unicode'a duyarli eslestirmeyi etkinlestirir. Onsuz . metakarakteri Temel Cok Dilli Duzlemin disindaki karakterleri (emoji gibi) eslestirmez ve \\w yalnizca ASCII kelime karakterlerini eslestirir. u bayragi, nicleyicilerin ve karakter siniflarinin vekil ciftleri dogru sekilde islemesini saglar ve \\p{Letter} gibi Unicode ozellik kacislarini etkinlestirir. Ileriye bakislar (?=...) ve geriye bakislar (?<=...) bir konumda kaliplari kontrol eden ancak eslesmee dahil etmeyen sifir genislikli bildirimlerdir. Pozitif ileriye bakis (?=...) neyin takip etmesi gerektigini, negatif ileriye bakis (?!...) ise neyin takip etmemesi gerektigini bildirir. Ornegin, \\d+(?= dollars) " dollars" ile takip edilen sayilari eslestirir ancak yalnizca sayinin kendisini yakalar. Geriye bakislar ayni sekilde calisir, ancak onceki metni kontrol eder.