Normal ifadeler (regex), metin içinde desen eşleştirme için güçlü araçlardır, ancak bunları doğru bir şekilde oluşturmak zor olabilir. İster veri çıkarıyor, ister girişi doğruluyor, ister belirli metin yapılarını arıyor olun, regex'inizdeki küçük bir hata beklenmedik sonuçlara veya hiç eşleşmemeye yol açabilir.
Bu Regex Test Aracı, özellikle PHP'nin PCRE (Perl Uyumlu Normal İfadeler) sözdizimi için tasarlanmış sezgisel bir çevrimiçi araçtır. Normal ifadelerinizi herhangi bir giriş dizesine karşı hızlı bir şekilde test etmenize, tüm eşleşmeleri ve yakalanan gruplarını belirlemenize olanak tanır. Bu, regex desenlerinizin tam olarak amaçlandığı gibi çalıştığından emin olmanıza, hata ayıklamanıza ve iyileştirmenize yardımcı olur.
Regex Test Aracı, PHP ortamında normal ifadelerle çalışan herkes için bir sanal alan görevi görür. Özellikle karmaşık desenlere dayalı metinleri sık sık araması, çıkarması veya doğrulaması gereken web geliştiricileri, veri analistleri, sistem yöneticileri ve içerik oluşturucular için kullanışlıdır. Regex'iniz hakkında anında geri bildirim sağlayarak, araç tahmini ortadan kaldırır ve geliştirme ve hata ayıklama sürecini önemli ölçüde hızlandırır.
Birincil amacı, kullanıcı tanımlı bir normal ifadeyi ve bir hedef metin dizesini alıp, ardından PHP tabanlı bir desen eşleştirme işlemi yürütmektir. Sonuçlar, test dizesinin hangi bölümlerinin desenle eşleştiğini ve bu eşleşme içinde yakalanan belirli grupları açıkça gösterir. Bu etkileşimli yaklaşım, regex öğrenmeyi ve uygulamayı çok daha erişilebilir ve verimli hale getirir.
Regex Test Aracını Kullanma: Adım Adım Kılavuz
Regex Test Aracını kullanmak, hızlı yineleme ve anında geri bildirim için tasarlanmış basit bir süreçtir. Normal ifadelerinizi etkili bir şekilde test etmek için şu adımları izleyin:
Adım 1: Normal İfadenizi Girin
"Normal İfade" giriş alanını bulun. Buraya regex deseninizi yazacak veya yapıştıracaksınız. Deseninizin doğru şekilde sınırlandırıldığından emin olun (örn.
/desen/). Araç, performansı ve güvenliği korumak için maksimum 500 karakterlik bir desen uzunluğu uygular.
Size yardımcı olmak için araç, birkaç önceden ayarlanmış regex deseni sunar. Ortak bir deseni doğrudan giriş alanına yüklemek için aşağıdaki düğmelerden herhangi birine tıklayın:
- e-posta:
/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}/
- url:
/https?://(?:[a-zA-Z0-9-._~:/?#[]@!$&'()*+,;=%]|&(?!amp;))+/
telefon: /+?d{1,3}[-.s]?(?d{3})?[-.s]?d{3}[-.s]?d{4}/
onaltılık: /#(?:[0-9a-fA-F]{3}){1,2}b/
ip: /b(?:d{1,3}.){3}d{1,3}b/
tarih: /bd{4}-d{2}-d{2}b/
Adım 2: Test Dizginizi Sağlayın
"Test Dizgisi" metin alanına, düzenli ifadenizi test etmek istediğiniz metni girin. Bu, aracın sağladığınız desene göre eşleşmeleri arayacağı içeriktir. Araç, maksimum 10.000 karaktere kadar test dizgilerini destekler.
Adım 3: Testi Çalıştırın
Hem düzenli ifadeniz hem de test dizginiz girildikten sonra "Regex'i Test Et" düğmesine tıklayın. Araç girdinizi işleyecek ve sonuçları formun altında görüntüleyecektir.
Adım 4: Sonuçları Yorumlayın
İşlemden sonra araç üç sonuçtan birini sunar:
- Hata Mesajı: Bir sorun oluşursa, bir hata kutusu görünür. Yaygın hatalar arasında "Geçersiz düzenli ifade sözdizimi" (örn. eksik sınırlayıcılar veya kapanmamış bir grup) veya 500 karakterlik desen sınırını veya 10.000 karakterlik test dizgisi sınırını aşarsanız "Giriş çok büyük" bulunur.
- Eşleşme Bulunamadı: Deseniniz test dizgisinde herhangi bir eşleşme bulamazsa, "Eşleşme bulunamadı." mesajı görüntülenecektir.
- Eşleşmeler Bulundu: Eşleşmeler bulunursa, araç toplam eşleşme sayısını (örn. "3 eşleşme bulundu") bildirecek ve bunları ayrıntılı bir tabloda sunacaktır:
| # |
Eşleşme |
Gruplar |
| 1 |
Regex tarafından eşleşen tam dize. |
Bireysel gruplar tarafından yakalanan dizelerin virgülle ayrılmış listesi (örn. (grup1)(grup2)). Grup yoksa '—' gösterir. |
Bu Regex Test Cihazı, işlemleri için PHP'nin temel
PCRE (Perl Uyumlu Düzenli İfadeler) işlevlerini kullanır. Bu, burada test ettiğiniz desenlerin bir PHP betiği içinde davrandıklarıyla aynı şekilde davranmasını sağlayarak, geliştirme için güvenilir bir ortam haline getirir.
PHP'nin PCRE İşlevleri
Bir testi gönderdiğinizde, araç ilk olarak PHP'nin `@preg_match($pattern, '')` işlevini kullanarak temel bir sözdizimi doğrulaması yapar. Bu ilk kontrol, tam bir arama denemeden önce hatalı biçimlendirilmiş desenleri hızla tanımlar. Sözdizimi geçerliyse, daha sonra `preg_match_all($pattern, $input, $matches, PREG_SET_ORDER)` kullanır. Bu işlev, giriş dizesindeki desenin tüm oluşumlarını bulur ve bunları `$matches` dizisinde depolar; her eşleşme (yakalanan tüm gruplar dahil) ayrı bir giriş olarak yer alır.
Burada `PREG_SET_ORDER` bayrağı çok önemlidir; `$matches` dizisindeki her öğenin eksiksiz bir eşleşmeyi temsil etmesini sağlar; burada ilk öğe (`$match[0]`) tam eşleşen dizedir ve sonraki öğeler (`$match[1]`, `$match[2]`, vb.) regex'inizde tanımlanan herhangi bir alt desen (grup) tarafından yakalanan dizelerdir.
### Performans ve Güvenlik Önlemleri
Kararlı ve güvenli bir test ortamı sağlamak için Regex Test Aracı çeşitli güvenlik mekanizmaları içerir:
* **Giriş Boyutu Sınırları:** Aşırı kaynak tüketimini önlemek için araç, regex deseninizin maksimum uzunluğunu 500 karakterle ve test dizenizin maksimum uzunluğunu 10.000 karakterle sınırlar.
* **ReDoS Önleme:** Düzenli İfade Hizmet Reddi (ReDoS) saldırıları, belirli girişlerle üstel işlem süresine neden olabilen bazı karmaşık regex desenlerini kullanır. Bunu azaltmak için araç, testinizi çalıştırmadan önce PHP'nin PCRE yapılandırmasını geçici olarak ayarlar. `pcre.backtrack_limit` ve `pcre.recursion_limit` değerlerini `10000` olarak ayarlar. Bu sınırlar, desenlerin aşırı CPU döngüsü tüketmesini önler ve testten sonra orijinal değerlerine geri döner.
### Gerçek Dünya Örnekleri ve Kullanım Durumları
Regex Test Aracı, çeşitli pratik uygulamalar için paha biçilmezdir:
* **Veri Çıkarma:** Yapılandırılmamış metin belgelerinden veya günlük dosyalarından e-posta adresleri, URL'ler, telefon numaraları veya tarihler gibi belirli bilgi parçalarını çekin.
* **Giriş Doğrulama:** Uygulamalarınızda işlenmeden önce kullanıcı girişlerinin (örn. kayıt formları, arama sorguları) gerekli biçimlere uygun olduğundan emin olun.
* **Metin Arama ve Değiştirme:** Daha sonra programlı olarak değiştirilebilecek veya yerine başka bir şey konulabilecek karmaşık metin desenlerini hassas bir şekilde bulun.
Günlük Dosyası Analizi: Hata kodlarını, belirli kullanıcı eylemlerini veya sistem olaylarını belirlemek için büyük günlük dosyalarını ayrıştırarak sistemleri izlemeyi ve sorun gidermeyi kolaylaştırır.
Veri Temizleme: Tutarsızlıkları belirleyerek ve yeniden biçimlendirerek büyük veri kümelerindeki veri formatlarını (örn. tarihler, para birimi) standartlaştırın.
Yaygın Regex Sorunlarını Giderme
Regex Test Cihazı süreci basitleştirmeyi amaçlasa da, yine de sorunlarla karşılaşabilirsiniz. İşte bazı yaygın sorunlar ve çözümleri:
- "Geçersiz normal ifade sözdizimi": Bu genellikle deseninizin hatalı biçimlendirildiği anlamına gelir. Eksik sınırlayıcıları (örn. başlangıçta ve sonda
/), kaçırılmamış özel karakterleri, kapatılmamış parantezleri veya yanlış niceleyicileri iki kez kontrol edin.
- Eşleşme bulunamadı: Deseniniz sözdizimsel olarak doğruysa ancak eşleşme vermiyorsa, çok spesifik olabilir veya test dizeniz beklediğiniz metni içermeyebilir. Deseni basitleştirmeyi, test dizenizdeki yazım hatalarını kontrol etmeyi veya daha az kısıtlayıcı bir regex kullanmayı deneyin.
- Beklenmeyen eşleşmeler veya gruplar: Sonuçlar beklediğiniz gibi değilse, deseninizin mantığını dikkatlice gözden geçirin. Gruplarınızın doğru tanımlandığından ve açgözlülüğün/açgözlü olmamanın (
* ve *?) amaçlandığı gibi uygulandığından emin olun.
- Giriş çok büyük: Giriş boyutuyla ilgili hatayı alırsanız, regex deseninizin uzunluğunu 500 karakterin altına veya test dizenizin uzunluğunu 10.000 karakterin altına düşürün.
Sıkça Sorulan Sorular
S: Normal ifade nedir?
C: Normal ifade veya regex, bir arama desenini tanımlayan bir karakter dizisidir. Öncelikle dize deseni eşleştirmesi için kullanılır ve kullanıcıların tam dizeler yerine karmaşık kurallara dayalı olarak metnin belirli kısımlarını bulmasına, değiştirmesine veya çıkarmasına olanak tanır.
S: Neden bir Regex Test Cihazı kullanmalıyım?
C: Bir Regex Test Cihazı, regex desenlerinizi oluşturmak ve doğrulamak için etkileşimli bir ortam sağlar. Sözdizimi hatalarını belirlemeye, eşleşmeleri görselleştirmeye ve ifadelerinizin çeşitli test durumlarına karşı amaçlandığı gibi çalıştığını doğrulamaya yardımcı olarak geliştirme ve hata ayıklama sırasında önemli ölçüde zaman kazandırır.
S: Bu araç hangi regex sözdizimini destekler?
C: Bu Regex Test Aracı, PHP'nin PCRE (Perl Uyumlu Düzenli İfadeler) sözdizimini destekler. Bu, PHP'de kullanılan standart regex motorudur ve karmaşık desen eşleştirme işlemleri için zengin bir özellik ve yetenek seti sunar.
S: Test edebileceğim giriş boyutunda sınırlamalar var mı?
C: Evet, araç performans ve güvenlik için yerleşik sınırlamalara sahiptir. Düzenli ifade deseniniz 500 karakteri geçemez ve test dizeniz maksimum 10.000 karakterle sınırlıdır.
S: Bu araç, Düzenli İfade Hizmet Reddi (ReDoS) saldırılarını nasıl önler?
C: Araç, test sırasında PHP'nin
pcre.backtrack_limit ve
pcre.recursion_limit değerlerini 10000 olarak ayarlayarak dahili güvenlik önlemleri uygular. Bu sınırlar, karmaşık veya verimsiz bir regex'in tüketebileceği hesaplama kaynaklarını kısıtlayarak potansiyel ReDoS güvenlik açıklarını önler.
Sonuç
Regex Test Aracı, düzenli ifadeler geliştirmek ve doğrulamak için sağlam ve güvenli bir ortam sağlar. PHP'nin güçlü PCRE motorundan yararlanarak ve net, yapılandırılmış sonuçlar sunarak, geliştiricileri ve veri profesyonellerini karmaşık metin işleme görevlerini güvenle ele almaya teşvik eder. Regex iş akışınızı kolaylaştırmak için sezgisel arayüzünü, önceden ayarlanmış desenlerini ve hata işlemeyi kullanın.
Düzenli ifadelerinizi bugün verimli bir şekilde test etmeye başlayın ve projeleriniz için desen eşleştirmenin tüm potansiyelini ortaya çıkarın.