Düzenli ifadeleri animasyonlu eşleşme vurgusuyla test et.
Son güncelleme
Bayraklar
//g
Test metniBaşlamak için metin yapıştır
Test edilecek metni yapıştırın veya yazın…
EşleşmelerEşleşme yok
Eşleşmeler burada görünür — indeksler, yakalanan gruplar ve sayılar, canlı.
Regex tester nedir?
Regex tester, yazdığın düzenli ifadenin örnek metinde neyi eşlediğini anında görmeni sağlar. Geliştiriciler regex'i (regular expression) form girdisi doğrulamak, string içinden veri çekmek, log dosyalarında arama yapmak, metin temizlemek, editör komutları yazmak ve search-and-replace kuralları kurmak için kullanır.
Birkaç sembolün çok şey ifade ettiği için regex ilk bakışta şifreli görünür. Canlı bir tester bu sisi dağıtır: her yazdığın karakterde vurgulanan eşleşmeler ve capture group'lar güncellenir, böylece pattern tam istediğini yapana kadar deneyebilirsin.
Farklı diller biraz farklı regex motorları kullanır (JavaScript, PCRE, Python, Java, Go, .NET). Temeller — karakterler, karakter sınıfları, niceleyiciler, sabitleyiciler ve gruplar — her yerde aynı çalışır. Motorlar arasındaki ayrım ileri seviye özelliklerde başlar (lookbehind, isimli gruplar, possessive quantifier'lar).
Regex test ederken neler öğreneceksin
Bir pattern, metnin *anlamını* değil *biçimini* tarif eder. \d+ ardışık rakamları eşler ama o sayının mantıklı olup olmadığını bilmez.
Flag'ler davranışı değiştirir: g tüm eşleşmeleri bulur, i büyük/küçük harf farkını yok sayar, m^ ve $'ı satır başı/sonuna uydurur, s ise . karakterinin yeni satırı da eşlemesine izin verir.
Capture group'lar (...) eşleşmenin parçalarını çıkarmana yarar — sadece tüm string eşleşiyor mu diye kontrol etmekle kalmaz, parsing için şart.
Regex tester adım adım nasıl kullanılır
1
Pattern'ini yaz
Pattern alanına düzenli ifadeni gir. Etrafına / slash'larını koymana gerek yok — onlar JavaScript literal sözdizimidir, pattern'in bir parçası değildir.
2
İhtiyacın olan flag'leri aç
Genelde işine en çok g (tüm eşleşmeleri bul) ve i (büyük/küçük harf duyarsız) yarayacak. Satır bazlı sabitleyiciler için m, . karakterinin yeni satırı eşlemesi için s kullan.
3
Test metnini yapıştır
Test alanına örnek metni yapıştır. Yazdıkça eşleşmeler vurgulanır, capture group'lar da eşleşme listesinin altında gösterilir.
4
Eşleşme panelini oku
Her eşleşme; konumunu, tam metnini ve varsa yakalanan grupları gösterir. Pattern'in istediğini yakalayıp istemediğini atladığını buradan doğrula.
5
Doğru olana kadar inceltip ayarla
Niceleyicileri sıkılaştır, sabitleyici ekle (^, $) ya da literal karakterleri kaçışla (\., \?). Eşleşmeler ve gruplar tam olarak kodunun beklediği şekle gelene kadar üstüne git.
Regex cheat sheet
Regex'in %99 vakitte kullanacağın %80'i. Yer imine ekle — sözdizimini hatırlamanın en hızlı yolu burası. Tüm gramer için MDN'in regular expressions kılavuzuna bak.
Token
Anlamı
Örnek
.
Herhangi tek bir karakter (yeni satır hariç)
a.c → abc, a-c eşler
\d\D
Rakam / rakam olmayan
\d+ → 123 eşler
\w\W
Kelime karakteri (harf/rakam/_) / kelime karakteri olmayan
\w+ → hello_1 eşler
\s\S
Boşluk / boşluk olmayan
\s+ boşluk ve tab'leri eşler
[abc]
a, b ya da c'den biri
[aeiou] bir sesli harfi eşler
[^abc]
a, b veya c dışında her şey
[^0-9] rakam olmayanları eşler
*+?
Önceki ifadeden 0+, 1+, 0 veya 1 tane
a+ → a, aaa eşler
{n}{n,m}
Tam n / n ile m arasında tekrar
\d{3,5} 3 ile 5 arasında rakam
^$
String başı / sonu (m ile satır başı/sonu)
^Error → satır Error ile başlıyor
(...)
Capture group
(\d+) rakamları yakalar
(?:...)
Yakalama yapmayan grup
(?:foo|bar) yakalamadan grupla
a|b
Alternasyon — a veya b
yes|no
\b
Kelime sınırı
\bcat\b → cat eşler, cats eşlemez
Deneyebileceğin regex örnekleri
Basit bir e-posta biçimini eşle
Pattern
^[\w.+-]+@[\w-]+\.[\w.-]+$
Metin
learner@coddy.tech
Bu pattern temel birşey@birşey.birşey biçimini yakalar. Gerçek hayattaki e-posta doğrulaması bundan çok daha esnektir — formlarda type="email" artı sunucu tarafında bir kontrol kullanmak çok daha sağlıklı.
Bir cümledeki tüm sayıları çıkar
Pattern
\d+
Metin
Lesson 12 has 3 tasks and 2 quizzes.
g flag'iyle birlikte tüm rakam dizilerini bulur: 12, 3, 2. \d+ regex dünyasında "bir veya daha fazla rakam" demektir.
URL'den capture group ile id çek
Pattern
/users/(\d+)
Metin
/users/42/profile
Tam eşleşme /users/42 olur, ama (\d+) capture group'u yalnızca 42'yi getirir. Kod tarafında bir regex eşleşmesini gerçekten *kullanmanın* yolu capture group'lardan geçer.
Greedy vs lazy niceleyiciler
Greedy
<.+>
Lazy
<.+?>
Metin
<b>hello</b>
Greedy versiyon tüm string'i, yani <b>hello</b>'yu eşler çünkü .+ mümkün olduğunca çok karakteri yutar. Lazy versiyon (+?) ilk >'da durur; sonuçta sadece <b> ve </b> eşlenir.
Sık yapılan regex hataları
Özel karakterleri kaçışlamayı unutmak: ., ?, +, (, ), [, ], {, }, \, ^, $, |. Bunları gerçek anlamıyla kullanacaksan başına \ koy.
Sadece bir örnekte çalışan, ama fazladan boşluk, satır sonu veya eksik alan içeren gerçekçi girdide kırılan bir pattern yazmak.
.*'yi greedy haliyle kullanıp niyet ettiğinden çok daha fazlasını eşlemek — .*?'ya geç ya da daha spesifik bir karakter sınıfı kullan.
Regex SSS
Regex nedir?
Regex, *regular expression* (düzenli ifade) ifadesinin kısaltmasıdır — metin eşlemek için tasarlanmış kompakt bir desen dili. Aynı fikir neredeyse her programlama dilinde, birçok editörde ve komut satırı aracında karşına çıkar.
Regex nasıl yazılır?
Önce eşlemek istediğin sabit karakterleri yaz, sonra değişken kısımları karakter sınıfları (\d, \w, [abc]) ve niceleyicilerle (*, +, ?, {n,m}) değiştir. Pattern istediğin tüm durumları tam olarak eşleyene kadar bir regex tester ile dene-yanıl.
Regex'te \w ne anlama geliyor?
\w bir kelime karakterini eşler — yani bir harf, bir rakam veya alt çizgi. \W ise tam tersi (kelime karakteri olmayan her şey). Tam küme; motora ve Unicode flag'inin açık olup olmamasına göre değişir.
Regex'im neden çok fazla eşliyor?
Niceleyiciler varsayılan olarak greedy'dir — .* mümkün olduğunca çok karakteri eşler. Lazy bir niceleyiciye (.*?) geç ya da daha spesifik bir karakter sınıfı kullanarak tam istediğin yerde dursun.
JavaScript regex'i tüm regex'lerle aynı mı?
Temel kısımlar aynıdır ama motorlar farklılaşır. JavaScript, PCRE, Python re, Java, Go ve .NET; flag'ler ve ileri seviye özellikler (lookbehind desteği, isimli gruplar, possessive quantifier'lar) konusunda birbirinden ayrılır.
Yeni başlayanlar regex öğrenmeli mi?
Evet — ama sindire sindire. Önce sabit karakterler, karakter sınıfları, niceleyiciler, sabitleyiciler, flag'ler ve capture group'larla başla. Lookaround'ları, isimli grupları ve koşullu regex'i sonraya bırak.