Regex Testi
Regex Testi
Regex Test Aracı: Gerçek zamanlı eşleşme, bayrak kontrolü, yakalama grupları, adlandırılmış gruplar ve anında değiştirme önizlemesi ile düzenli ifadeleri test edin. Performans riski algılama ve zaman aşımı koruması içerir — desen doğrulama, metin çıkarma ve toplu değiştirme için idealdir. Tüm işlemler tarayıcı içinde yerel olarak gerçekleştirilir.
/
/g
Genel arama
Büyük/küçük harf duyarsız
Çok satırlı
Nokta satır sonunu içerir
Unicode modu
Sabit konum eşleşmesi
Test Metni
Değiştirme metni
Eşleşme sonuçları
Eşleştirmeye başlamak için bir model girin
Değiştirme Önizlemesi
Hızlı başlangıç
Yaygın kullanım senaryoları
Günlüklerden ve metinlerden kimlikleri, e-postaları, tarihleri veya özel belirteçleri çıkarın Ardından sonucu hemen kopyalayabilir, indirebilir veya dışa aktarabilirsiniz.
Koda entegre etmeden önce kullanıcı giriş formatlarını doğrulayın Ardından sonucu hemen kopyalayabilir, indirebilir veya dışa aktarabilirsiniz.
Yakalama gruplarını ve adlandırılmış grupları kullanarak içeriği toplu olarak değiştirin Ardından sonucu hemen kopyalayabilir, indirebilir veya dışa aktarabilirsiniz.
Kullanım tavsiyeleri
Sınırlamalar ve uyumluluk
Gizlilik ve güvenlik
Sıkça Sorulan Sorular
Düzenli ifade (regex), metin kalıplarını tanımlamak için kullanılan bir dildir. Bunu "gelişmiş arama" gibi düşünebilirsiniz: sabit bir kelimeyi aramak yerine, belirli bir kurala uyan tüm parçaları bulursunuz.\n\nÖrneğin \\d{4}-\\d{2}-\\d{2} deseni YYYY-AA-GG biçimindeki tarihleri, [\\w.]+@[\\w.]+ deseni ise e-posta adreslerini yakalayabilir. Regex; metinden veri çıkarma, biçim doğrulama ve toplu değiştirme işlemlerinde sık kullanılır.\n\nJavaScript, Python, Java, Go gibi çoğu programlama dili ve VS Code, grep, sed gibi birçok araç regex desteği sunar. Bu araç, hızlı denemeler ve öğrenme için tarayıcıdaki JavaScript RegExp motorunu kullanır.
JavaScript regex varsayılan olarak yalnızca ilk eşleşmeyi döndürür. Bu, aracın kısıtı değil, dilin çalışma biçimidir. Tüm eşleşmeleri görmek için bayrak çubuğundaki g seçeneğini açın.\n\ng ve y arasındaki farkı da bilmek gerekir: g metni baştan sona tarar, y (sticky) ise bir sonraki eşleşmenin tam olarak önceki eşleşmenin bittiği konumdan başlamasını ister. Arada boşluk ya da başka bir karakter varsa y durur. Çoğu durumda yalnızca g bayrağını açmak yeterlidir.
Geçersiz regex hatasının en yaygın dört nedeni şunlardır:\n\n1. Kapanmayan parantez veya köşeli parantez: her ( için bir ), her [ için bir ] gerekir.\n2. Niceleyicinin yanlış yerde kullanılması: *, +, ?, {n} gibi niceleyiciler tekrar edilebilen bir öğeden sonra gelmelidir. *+ veya ?* gibi diziler geçersizdir; yalnızca *? gibi kullanımlar tembel eşleşme anlamına gelir.\n3. Eksik escape: desenin sonunda tek başına kalan \\ geçersizdir; ardından \\d, \\n veya \\\\ gibi belirli bir ifade gelmelidir.\n4. Unicode özelliği için u bayrağının eksik olması: \\p{L} veya \\p{Script=Han} gibi yapılar u bayrağı kapalıysa hata verir. Bu durumda u bayrağını açıp yeniden deneyin.
Bunlar, JavaScript `String.prototype.replace()` içinde kullanılan değiştirme başvurularıdır:\n\n- $1, $2, ..., $99: n'inci yakalama grubunun (...) içeriği\n- $&: eşleşen metnin tamamı\n- $`: eşleşmeden önceki metin\n- $': eşleşmeden sonraki metin\n- ${name}: adlandırılmış grubun (?<name>...) içeriği\n\nÖrneğin (\\w+)\\s(\\w+) deseni "hello world" ile eşleştiğinde ve değiştirme metni $2-$1 olduğunda sonuç "world-hello" olur. Değiştirme metnine düz bir $ işareti eklemek için $$ kullanın.
Zaman aşımı neredeyse her zaman "catastrophic backtracking" yüzünden olur. Regex motoru (a+)+b gibi iç içe niceleyicilerle veya birbirini örtüşen alternatiflerle karşılaşınca, çok fazla olası yolu denemek zorunda kalır ve eşleşme süresi hızla büyür.\n\nRiskli örnekler: (a+)+, (.*?)*, (.+)+$ gibi desenler. Sorunu azaltmak için:\n1. . yerine daha dar karakter sınıfları kullanın; örneğin .+ yerine [^\\s]+ tercih edin.\n2. İç içe niceleyicilerden kaçının; (a+)+ yerine a+ yazın.\n3. Örtüşen alternatifleri sadeleştirin; örneğin (a|ab)+ yerine a+b? kullanın.\n\nDeseni düzelttikten sonra eşleşme sonuçları bölümündeki "Tekrar dene" düğmesine basın. Araçta 4 saniyelik zaman aşımı koruması vardır; bu yüzden tarayıcıyı kilitlemez.
Aynı regex, farklı dillerde farklı sonuç verebilir; çünkü regex motorları tamamen aynı değildir. Fark genellikle üç alanda ortaya çıkar:\n\n1. Sözdizimi desteği: JavaScript, PCRE'nin özyinelemeli desenleri (?R), koşullu dalları (?(koşul)evet|hayır) veya atomik grupları (?>...) desteklemez. Python'un `re` modülü de bunların çoğunu desteklemez; Java ise atomik grupları destekler ama özyinelemeyi desteklemez.\n2. Unicode davranışı: Python 3, \\w ve \\d gibi kısayolları varsayılan olarak Unicode mantığıyla ele alır. JavaScript'te ise u bayrağı kapalıyken davranış daha sınırlıdır; bu yüzden \\w bazı CJK karakterlerini yakalamayabilir, \\b de beklediğiniz gibi çalışmayabilir.\n3. Satır sonu semantiği: Python ve JavaScript'te . varsayılan olarak \\n ile eşleşmez. Java'da benzer davranış için `Pattern.DOTALL` gerekir; JavaScript'te ise s bayrağı kullanılır.\n\nBu araç hızlı mantık doğrulaması için uygundur; üretimde kullanmadan önce hedef dilinizin regex motoruyla ayrıca test etmeniz gerekir.