Doğal Dilden Regex Üreten Yapay Zeka
Regex sürekli unutulan bir şey. Söyle, Ryna AI yazsın + nasıl çalıştığını açıklasın + test case'ler versin.
Ryna AI Editör Ekibi · Güncelleme: 03.04.2026
Aradığınız kalıbı zihninizde net görürsünüz — 'şu formattaki telefonları yakala', 'log satırlarından tarihleri ayıkla', 'sadece geçerli e-postaları geçir' — ama iş regex syntax'ına gelince tıkanırsınız. Bir quantifier yanlış yere düşer, kalıp ya hiçbir şeyi ya da her şeyi eşler; \d ile \w karışır, backslash cehenneminde gözünüz bozulur. Üstelik regex'in ciddi bir tarafı da var: 2019'da tek bir hatalı yazılmış kalıp, catastrophic backtracking yüzünden Cloudflare'i küresel çapta yaklaşık 30 dakika çökertti. Yani 'çalışıyor gibi görünen' bir pattern production'da CPU'yu kilitleyebilir.
Ryna AI'ye ne eşlemek istediğinizi düz Türkçe anlatırsınız, hangi dil/flavor'ı kullandığınızı (JavaScript, Python re, PCRE/PHP, .NET, Java, Go RE2, grep/POSIX) söylersiniz; o da hazır kalıbı, her token'ın satır satır açıklamasını, eşleşmesi gereken ve eşleşmemesi gereken test string'lerini ve edge case notlarını (unicode, boş string, greedy vs lazy, anchor'lar) birlikte verir. Tersine de çalışır: elinizdeki anlaşılmaz bir regex'i yapıştırıp 'bu ne yapıyor?' diye sorabilir, ya da kendi kalıbınız + eşleşmeyen input'u verip 'neden patlıyor?' dedirtebilirsiniz.
Regex'i asla kör güvenle production'a atmayın: Ryna'nın verdiği kalıbı bir taslak sayın, kendi gerçek verinizdeki hem pozitif hem negatif örneklerle test edin. Ücretsiz planda günlük neredeyse sınırsız mesaj var — gün boyu onlarca kalıbı deneyip rafine edebilirsiniz. Gerçek bir log dosyası, CSV veya ekran görüntüsü yükleyip 'bu verideki tüm sipariş numaralarını yakalayan kalıbı üret' demek, ya da karmaşık bir pattern'de ReDoS riskini derin analizle çıkarmak için Plus (399,99 TL/ay) gerekir.
Ryna AI ile neden bu iş
Flavor-farkında üretim: JavaScript, Python re, PCRE/PHP, .NET, Java, Go RE2, grep/POSIX — lookbehind, named group ve unicode davranışındaki syntax farklarını doğru kullanır.
Token-token açıklama: her `\d`, `[^ ]`, `(?:...)`, `{2,4}` parçasının ne yaptığını satır satır çözer — kalıbı ezberlemeden anlarsın.
Otomatik test seti: eşleşmesi gereken VE eşleşmemesi gereken örnek string'leri birlikte üretir, over-matching'i baştan görürsün.
Edge case kapsama: boş string, unicode karakter, satır sonu, greedy vs lazy, anchor'lı/anchorsuz durumları uyarır.
ReDoS uyarısı: iç içe quantizer (a+)+ gibi catastrophic backtracking risklerini işaretler ve güvenli alternatif kalıp önerir.
İki yönlü çalışır: hem tarifden kalıp üretir, hem elindeki anlaşılmaz regex'i sade Türkçe açıklar ya da bozuk kalıbı debug eder.
Örnek promptlar
Aşağıdaki promptlardan birini kopyalayıp chat.rynaai.com'a yapıştırın. Her prompt farklı bir senaryo için hazırlandı — Ryna AI'nın nasıl uyum sağladığını görmek için hepsini deneyin.
Adım adım nasıl çalışır
- 1
Ne eşleyeceğini tarif et
chat.rynaai.com'da eşlemek istediğin şeyi düz Türkçe anlat: 'şu formattaki fatura numaralarını yakala' veya 'sadece .edu.tr ile biten e-postaları geçir'. Ne kadar somut olursan kalıp o kadar isabetli çıkar.
- 2
Flavor'ı ve amacı belirt
Hangi dil/motor: 'JavaScript', 'Python re', 'PCRE', 'Go RE2', 'grep' — çünkü lookbehind, named group ve \d'nin unicode davranışı flavor'a göre değişir. Ayrıca amacını söyle: doğrulama mı (validation) yoksa metin içinden çıkarım mı (extraction)?
- 3
Pozitif ve negatif örnek ver
Eşleşmesi gereken 3-4 string kadar, eşleşmemesi gereken 3-4 string de ekle: 'bunlar geçmeli: ... bunlar geçmemeli: ...'. Negatif örnekler kalıbın aşırı eşleşmesini engelleyen en güçlü sinyaldir.
- 4
Açıklama ve test iste
'Kalıbı token token açıkla ve eşleşen/eşleşmeyen örneklerle bir test tablosu ver' de. Böylece kopyala-yapıştır yapmadan önce neyin neden çalıştığını görürsün; junior bir developer için de öğretici olur.
Örnek: girdi → çıktı
Siz sorarsınız
JavaScript. Türkiye cep telefonu doğrula: +90, 0 veya ülke kodsuz; 5 ile başlayan 10 hane; boşluk ve tire ayırıcıları da kabul et. Eşleşmeli/eşleşmemeli örnek ver.
Ryna AI çıkartır
```js /^(?:\+90|0)?[ -]?5\d{2}[ -]?\d{3}[ -]?\d{2}[ -]?\d{2}$/ ``` **Token açıklaması** - `^ … $` — tüm string'i baştan sona doğrular (validation) - `(?:\+90|0)?` — opsiyonel +90 ülke kodu ya da baştaki 0 - `[ -]?` — opsiyonel boşluk veya tire ayırıcı - `5\d{2}` — 5 ile başlayan operatör kodu (532, 543…) - `\d{3}[ -]?\d{2}[ -]?\d{2}` — kalan 7 hane, ayırıcılarla **Test tablosu** | Girdi | Sonuç | |---|---| | +905321234567 | eşleşir | | 0532 123 45 67 | eşleşir | | 532-123-45-67 | eşleşir | | 05321234 | eşleşmez (eksik hane) | | +904321234567 | eşleşmez (5 ile başlamıyor) | **Edge notları:** Kalıp yalnızca *formatı* doğrular, numaranın aktif olduğunu değil. Ayırıcılar serbest olduğu için '0 532...45 67' gibi tutarsız boşlukları da kabul eder; katı format istersen `[ -]?` yerine sabit tek boşluk kullan. İç içe quantizer içermediği için ReDoS riski yok ve Go RE2'de de sorunsuz derlenir.
İpuçları
- Sadece eşleşmesi gerekenleri değil, eşleşmemesi gerekenleri de ver — negatif örnekler over-matching'i en çok önleyen şeydir.
- Flavor'ı mutlaka söyle: lookbehind JS ve PCRE'de var, Go RE2'de yok; \d bazı flavor'larda unicode rakamları da eşler, ASCII sınırlaması istiyorsan [0-9] de.
- Okunurluk için 'named group kullan' iste — (?<yil>\d{4}) capture'ları index yerine isimle almanı sağlar, kod tarafında bakımı çok kolaylaşır.
- Ryna'dan 'iç içe quantizer (a+)+ gibi ReDoS riski var mı, güvenli sürümü de ver' iste — production kalıplarında pazarlık konusu değil.
- Tüm string'i mi doğruluyorsun yoksa içinden mi arıyorsun ayır: doğrulamada ^...$ anchor kullan, arama/çıkarımda kullanma — yoksa geçerli veriyi reddedersin.
- Aynı işten hem 'katı' hem 'esnek' iki sürüm iste — biri kesin format için, biri gerçek dünyanın kirli verisini yakalamak için.
Sık yapılan hatalar
- ✕Flavor belirtmeden kalıp istemek — JS'te çalışan lookbehind'lı kalıp Go RE2'de derlenmez bile.
- ✕Yalnızca pozitif örnek vermek — kalıp beklediğinden fazlasını eşler, gerçek veride sessizce yanlış pozitifler üretir.
- ✕Regex'i e-posta 'geçerliliği' sanmak — kalıp yazım hatasını yakalar ama kutunun gerçekten var olduğunu doğrulayamaz; teslimat için SMTP/doğrulama servisi gerekir.
- ✕Gerçek veriyle test etmeden production'a atmak — 'derleniyor' ile 'doğru eşliyor' aynı şey değildir.
- ✕İç içe quantizer'lı kalıbı körlemesine kopyalamak — (.*)* gibi yapılar ReDoS'a açıktır, büyük input'ta CPU'yu kilitler.
Kimler için
Developer, data analist, DevOps, log işleyen herkes.
Sık sorulanlar
Hangi dilleri ve regex flavor'larını destekliyor?
JavaScript, Python re, PCRE/PHP, .NET, Java, Go RE2, Ruby ve grep/POSIX. Başta flavor'ı belirt: RE2 lookaround ve backreference desteklemez, Ryna bunu uyarır ve alternatif verir.
Regex e-postayı mükemmel doğrular mı?
Hayır. Tam RFC 5322 kalıbı devasa ve pratikte gereksizdir; regex yazım hatalarını (@ eksik, çift nokta) yakalar ama kutunun var olduğunu doğrulayamaz. Gerçek teslimat için doğrulama/SMTP servisi gerekir — Ryna sana amaca uygun 'yeterince iyi' bir kalıp verir.
Catastrophic backtracking / ReDoS'a karşı uyarır mı?
Evet, iste yeter. İç içe quantizer risklerini işaretler, RE2-tarzı geriye dönüşsüz güvenli bir alternatif önerir. Karmaşık kalıplarda derin analiz için Plus'taki deep thinking daha ayrıntılı inceleme yapar.
Elimdeki karmaşık bir regex'i açıklar mı?
Evet, tersine çalışır. Anlaşılmaz kalıbı yapıştır; satır satır sade Türkçe açıklama, ne eşlediğine dair örnekler ve varsa gizli hataları (yanlış anchor, kaçış eksiği) çıkarır.
Log veya CSV yükleyip veriden kalıp üretebilir miyim?
Evet, ama dosya/PDF/ekran görüntüsü yükleme Plus özelliğidir (399,99 TL/ay). Ücretsiz planda örnek satırları metin olarak yapıştırırsın; günlük neredeyse sınırsız mesajla bol bol deneyip rafine edersin.
İlgili kullanım alanları
Ücretsiz — sınırsıza yakın günlük mesaj
Kredi kartı gerekmez. 399,99 TL/ay Plus ile görsel analiz, dosya analizi (PDF/Word/Excel), derin düşünme, web araştırması ve asistanlar açılır.