İçeriğe geç
LeedyBox
Destek ol

RegEx Test Aracı, Değiştirme ve Kopya Kağıdı

Düzenli ifadeleri eşleşmeleri ve yakalama gruplarını vurgulayarak test edin, değiştirmeleri önizleyin ve deseni altı dil için kod olarak kopyalayın.

Bayraklar
Eşleşmeler: 0

Eşleşme ayrıntıları ve yakalama grupları

Kopya kağıdı

Bir desene tıklayarak örnek metinle birlikte yükleyin.

Söz dizimi başvurusu

Karakterler

.Satır sonu dışında herhangi bir karakter (s ile satır sonları dahil)
\d \DRakam 0–9 / rakam değil
\w \WSözcük karakteri (A–Z, a–z, 0–9, _) / değil
\s \SBoşluk karakteri / boşluk değil
[abc] [^abc]a, b, c'den biri / a, b, c dışında herhangi biri
[a-z]a ile z aralığında bir karakter
\p{L}Herhangi bir dilde harf (u bayrağı gerekir)
\. \\ \(Özel bir karakteri olduğu gibi eşleştirmek için kaçışlar

Niceleyiciler

* + ?0 veya daha fazla / 1 veya daha fazla / 0 ya da 1
{n} {n,} {n,m}Tam olarak n / n veya daha fazla / n ile m arası
*? +? {n,m}?Tembel: mümkün olduğunca az karakter

Çapalar

^ $Metnin başı / sonu (m ile her satırın)
\b \BSözcük sınırı / sözcük sınırı değil

Gruplar ve ileri/geri bakış

(…)Yakalama grubu, $1, $2 … olarak kullanılır
(?:…)Yakalamayan grup
(?<name>…)Adlandırılmış grup, $<name> olarak kullanılır
\1 \k<name>Geri başvuru: bir grubun eşleştiği metnin aynısı
a|ba veya b
(?=…) (?!…)Ardından gelen / ardından gelmeyen
(?<=…) (?<!…)Öncesinde olan / öncesinde olmayan

Değiştirme

$1 $<name>Numaralı veya adlandırılmış grubun metni
$& $$Eşleşmenin tamamı / düz $ karakteri

Sonuçları kullanmadan önce kontrol edin. Araç olduğu gibi ve herhangi bir garanti olmaksızın sunulur; sonuçlar eksik veya hatalı olabilir. Hizmet Koşulları

Desenler JavaScript regex motoruyla test edilir. Söz dizimi ve davranış diğer dillerde ve veritabanlarında farklı olabilir. Kopya kağıdındaki desenler pratik örneklerdir, eksiksiz doğrulayıcılar değildir.

Nasıl kullanılır

  1. Deseni, çevreleyen eğik çizgiler ve bayraklar olmadan "Düzenli ifade" alanına girin ve metninizi "Test metni" alanına yapıştırın. Eşleşmeler siz yazdıkça "Eşleşmeler" altında vurgulanır ve sayılır. Bir örnekle başlamak için "Kopya kağıdı" bölümündeki bir desene tıklayın; bu işlem mevcut deseni, bayrakları, test metnini ve değiştirme ayarlarını değiştirir.
  2. "Bayraklar" altında ihtiyacınız olan bayrakları işaretleyin; bir harfin ne işe yaradığını görmek için imleci üzerine getirin. Sayfa açıldığında g ve u açıktır. g olmadan yalnızca ilk eşleşme bulunur ve yalnızca ilki değiştirilir.
  3. "Eşleşme ayrıntıları ve yakalama grupları" bölümünü okuyun: her eşleşme konumuyla birlikte listelenir; her grubun metni $1, $2 vb. olarak, adlandırılmış gruplarda grubun adıyla birlikte gösterilir. Her grubun nerede başlayıp bittiğini de görmek için d bayrağını açın.
  4. Bir değiştirmeyi denemek için "Eşleşmeleri şununla değiştir" seçeneğini işaretleyin ve yerine konacak metni yazın; gruplar için $1 veya $<name> kullanın. Değişen metin "Değiştirme sonucu" altında görünür ve "Sonucu kopyala" onu kopyalar.
  5. "Kod oluşturucu" altında JavaScript, Python, Java, PHP, Go veya C# seçin ve "Kodu kopyala" düğmesine tıklayın. "Eşleşmeleri şununla değiştir" işaretliyse kod parçası değiştirmeyi de içerir. "/desen/bayraklar olarak kopyala" deseni bir JavaScript regex sabiti (literal) olarak kopyalar.

Sık sorulan sorular

Test ettiğim metin bir yere gönderiliyor mu?

Hayır. Desen ve test metni tarayıcınızda, tarayıcının kendi JavaScript regex motoruyla eşleştirilir ve LeedyBox'a yüklenmez. Araç bunları kaydetmez de.

Desenim neden beklediğimden fazla metinle eşleşiyor?

Bir desen uyduğu her yerde eşleşir; bu yüzden \d{3}, 12345 içindeki 123'ü de bulur. Tam sözcükler veya sayılar için iki uca \b ekleyin ya da kopya kağıdındaki parola deseninin yaptığı gibi metnin tamamının (m açıkken her satırın) eşleşmesini şart koşmak için ^ ve $ kullanın. \b, \w'nin sözcük karakterlerine (A–Z, a–z, 0–9 ve _) dayanır ve ş, ğ, é veya 한 gibi harfleri sözcük dışı karakter sayar; bu yüzden ardından boşluk geldiğinde \bcafé\b, café ile eşleşmez. + ve * gibi niceleyiciler ayrıca açgözlüdür: <b>x</b> üzerinde <.+> deseni dizenin tamamıyla eşleşir, <.+?> veya <[^>]+> ise ilk > işaretinde durur.

Python, PHP veya Java'da çalışan bir desen burada neden RegEx hatası veriyor?

Bu sayfa JavaScript motorunu kullanır; bu motor diğer motorlardaki bazı söz dizimlerini reddeder: (?P<name>…) biçimindeki adlandırılmış gruplar, baştaki (?i) gibi satır içi bayraklar, (?>…) atomik grupları ve a++ gibi sahiplenici niceleyiciler. Adlandırılmış grupları (?<name>…) olarak yazın ve satır içi bayraklar yerine "Bayraklar" altındaki onay kutularını kullanın. u bayrağı açıkken JavaScript kaçış dizilerinde de daha katıdır: \# bir hatadır, köşeli parantezlerin dışındaki \- de öyle; bu durumda ters eğik çizgiyi kaldırın veya u bayrağını kapatın.

\p{L} neden harflerle eşleşmiyor veya bir emoji neden iki karakter sayılıyor?

\p{L} gibi Unicode özellik sınıfları u bayrağı gerektirir; u olmadan JavaScript, \p{L} ifadesini düz p{L} metni olarak okur ve . işareti, birçok emoji gibi Temel Çok Dilli Düzlem (BMP) dışındaki bir karakterin yalnızca yarısıyla eşleşir. Kopya kağıdından bir desen yüklemek onun bayraklarını da yükler ve "Özel karakterler" dışındaki desenlerin hepsi u bayrağını kapalı bırakır; bu yüzden böyle bir söz dizimi eklemeden önce "Bayraklar" bölümünü kontrol edin. u açıkken bile . tek bir kod noktasıyla eşleşir; bayrak emojileri veya ten rengi içeren başparmak emojisi gibi bazı emojiler ise iki veya daha fazla kod noktasından oluşur. Eşleşme ayrıntılarındaki konumlar, JavaScript'te olduğu gibi UTF-16 kod birimlerini sayar; bu yüzden Temel Çok Dilli Düzlem dışındaki karakterler u açıkken bile iki konum kaplar.

Değiştirme metnindeki \n neden satır sonu eklemiyor?

Değiştirme metni JavaScript'in replace() kurallarına uyar: yalnızca $ ile başlayan diziler özeldir; bu yüzden \n ve \t, satır sonu veya sekme olarak değil, bir ters eğik çizgi ve ardından gelen bir harf olarak eklenir. Alan tek satırlıktır, bu yüzden buraya satır sonu girilemez; satır sonunu bunun yerine oluşturulan koda ekleyin. Eşleşmeleri silmek için "Eşleşmeleri şununla değiştir" seçeneğini işaretleyin ve alanı boş bırakın; kopya kağıdındaki "HTML/XML etiketlerini kaldır" deseni de bunu yapar.

Bir desen çok yavaş çalışırsa veya çok fazla eşleşme bulursa ne olur?

Tarayıcı Web Worker kullanımına izin veriyorsa eşleştirme arka planda bir worker içinde çalışır ve 2 saniye sonra durdurulur; bu yüzden uzun bir a dizisinin ardından başka bir karakter gelen bir metinde (a+)+$ gibi yıkıcı geri izlemeye yol açan bir desen, sayfayı kilitlemek yerine bir mesaj gösterir. "Eşleşmeler" altındaki sayı tüm eşleşmeleri kapsar, ancak yalnızca ilk 1.000 eşleşme vurgulanır ve ayrıntılarda listelenir.

Oluşturulan kodu projeme olduğu gibi yapıştırabilir miyim?

Kodu bir başlangıç noktası olarak kullanın. Oluşturucu deseni JavaScript'te bir regex sabiti (literal), diğer dillerde ise dize olarak yazar; söz diziminin farklı olduğu yerlerde adlandırılmış grupları ve değiştirme başvurularını yeniden yazar (örneğin Python'da (?P<name>…) ve \g<1>), i, m ve s bayraklarını karşılıklarına eşler ve girdinizin text adlı bir değişkende olmasını bekler. Desen tırnak işareti veya eğik çizgi içeriyorsa kod parçasının bunları doğru şekilde kaçışladığını kontrol edin. Yine de motorlar birbirinden farklıdır: Go'nun regexp paketi, ileri/geri bakışı ve geri başvuruları desteklemeyen RE2 söz dizimini kullanır; Python'un standart re modülü de \p{…} sınıflarını desteklemez. Bu yüzden kodu kendi verilerinizle test edin.