Menu

Regex Test Aracı

Düzenli ifadeleri animasyonlu eşleşme vurgusuyla test et.

Son güncelleme

Bayraklar
Test metniBaşlamak için metin yapıştır
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.

TokenAnlamıÖrnek
.Herhangi tek bir karakter (yeni satır hariç)a.cabc, a-c eşler
\d \DRakam / rakam olmayan\d+123 eşler
\w \WKelime karakteri (harf/rakam/_) / kelime karakteri olmayan\w+hello_1 eşler
\s \SBoş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 tanea+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|bAlternasyon — a veya byes|no
\bKelime sınırı\bcat\bcat 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.

Daha fazla bilgi

Diğer geliştirici araçları

Coddy ile kodlamayı öğren

BAŞLA