WY · BÖLÜM 07 · FÖY 132
YAZ-132 · Yazılım & Teknik · ~2 dk

Örnekten çalışan regex üret: ne yakalar, ne kaçırır belli olsun

Kendi motoruna uygun tek satırlık bir regex, parçalarının ne yaptığının açıklaması, verdiğin örneklerin hangisini yakalayıp hangi sınır durumunu kaçırabileceğinin dökümü ve doğrulaman için hazır test dizeleri.

Kanca

Regex neredeyse hiç kimsenin ezberden yazamadığı ama işte sürekli lazım olan bir araç. Log satırı, e-posta, ürün kodu ayıklarken dokümana bakıp deneme yanılmayla saatler gidiyor; bir de yarın o regex neyi kaçırıyor kimse bilmiyor.

Hamle — Claude / ChatGPT (ikisi de çalışır)
Prompt — kopyala & yapıştır
Görevin: sana vereceğim örneklerden ÇALIŞAN bir regex üretmek ve sınırını açıkça yazmak. Uydurma yapma, örnekte olmayan durumu tahmin etme.

BAĞLAM:
- Regex motoru/dili: [ör. Python re / JavaScript / PCRE / grep -E / .NET — birini yaz]
- Ne ayıklamak/eşleştirmek istiyorum (tek cümle): [buraya yaz]

EŞLEŞMELİ (bunlar yakalanmalı, her satıra bir örnek):
[gerçek verinden örnekleri yapıştır]

EŞLEŞMEMELİ (bunlar yakalanmamalı, her satıra bir örnek):
[en az 2 karşı örnek yapıştır; hiç yoksa "yok" yaz]

KURALLAR:
1. Sadece yukarıdaki örneklere dayan. Örnekte görünmeyen bir durumu (yeni bir format, ayraç, uzunluk) varsaymak yerine belirt.
2. EŞLEŞMEMELİ listesi boşsa veya verdiğim örnekler regexi tek bir anlama getirmeye yetmiyorsa, tahmin yürütme; "EKSIK: ..." yaz ve hangi örneği eklememi istediğini net söyle.
3. Önce tek satırlık regexi ver. Sonra parçalarını sırayla açıkla: her grup / karakter sınıfı ne işe yarıyor.
4. "YAKALAR / KAÇIRIR" başlığı altında yaz: EŞLEŞMELİ örneklerimin hepsini yakalıyor mu; hangi sınır durumunu kaçırabilir (baştaki/sondaki boşluk, büyük-küçük harf, Türkçe karakter ç/ğ/ı/ş, satır sonu, çok uzun/çok kısa girdi).
5. Kendimin doğrulayabilmesi için, benim verdiklerimden FARKLI 2 eşleşmesi gereken + 2 eşleşmemesi gereken kısa test dizesi öner.

ÇIKTI SIRASI: Regex → Parça açıklaması → Yakalar/Kaçırır → Test dizeleri.
Çıktı

Kendi motoruna uygun tek satırlık bir regex, parçalarının ne yaptığının açıklaması, verdiğin örneklerin hangisini yakalayıp hangi sınır durumunu kaçırabileceğinin dökümü ve doğrulaman için hazır test dizeleri. Örnekleri yapıştırdıktan sonra elde etmesi ~2 dk.

Kariyer çentiği

Belirsiz bir "şu formatı ayıkla" isteğini, sınırı yazılı ve test edilebilir bir regexe çevirdiğin için PR'da ya da ekipte "bu neyi kaçırıyor?" sorusuna hazır cevabın olur.

Sınır

Üretilen regexi mutlaka kendi motorunda ve kendi verinde çalıştırıp doğrula; iç içe/dengeli yapılarda (HTML, kod, parantez eşleştirme) regex doğru araç olmayabilir. Gerçek log ya da kişisel veri yerine maskelenmiş/örnek dize yapıştır.

Örnek — bu prompt ne üretir?
Örnek girdi
Motor: JavaScript (Node.js)
Ayıklamak istediğim: bir muhasebe export'undan (CSV kopyası) belge kodları

Export'tan ham satırlar:
12.03.2026;FT-2026-004821;A Firması;14.500,00 TL
12.03.2026;SIP-2026-000142;B Ltd.;  2.300,00 TL
15.03.2026;IR-2025-019003;C A.Ş.;9.900,00 TL
Tarih;Belge;Cari;Tutar   (başlık satırı)
18.03.2026;DEK-2026-000007;A Firması;0,00 TL

Yakalanmalı: FT-2026-004821, SIP-2026-000142, IR-2025-019003, DEK-2026-000007
Yakalanmamalı (karşı örnek): ft-2026-004821 (küçük harf), FT-2026-4821 (eksik hane), 2026-004821 (önek yok), FT/2026/004821 (yanlış ayraç)
Çıktı

Regex (JavaScript)

/\b[A-Z]{2,3}-\d{4}-\d{6}\b/g

Parça açıklaması

ParçaNe yapıyor
\bKelime sınırı; kodu ortasından değil başından yakalar
[A-Z]{2,3}2–3 BÜYÜK harf önek (FT, SIP, IR, DEK); küçük harf kabul etmez
-Düz tire ayraç
\d{4}4 haneli yıl (2025, 2026)
-İkinci tire
\d{6}6 haneli sıra no (000007, 004821)
\bKelime sınırı; sonuna fazla hane/harf yapışmışsa dışlar
gSatırdaki tüm kodları bulur, ilkinde durmaz

Yakalar / Kaçırır

  • Verdiğin 4 EŞLEŞMELİ kodun hepsini yakalar; noktalı virgülle ayrılmış ham satırların içinden de çeker.
  • 4 karşı örneği doğru dışlar: ft-... (küçük harf), FT-2026-4821 (eksik hane), 2026-004821 (önek yok), FT/2026/004821 (yanlış ayraç).
  • Dikkat / kaçırabilir:
  • Önek genişliği: örneklerinin öneki 2–3 harf olduğu için {2,3} yazdım. 4 harfli veya rakamlı önek (ör. FTX2-2026-...) da geçerliyse bu regex onu kaçırır — [EKSİK: öyle bir örnek ver, öneki ona göre daraltayım].
  • Karışık harf: yalnızca tamamı BÜYÜK önek geçer; Ft-2026-... gibi baş harfi büyük gerisi küçük varyant varsa kaçar. Kasıtlıysa sorun yok.
  • Çok uzun numara: FT-2026-0048210 (7 hane) sondaki \b yüzünden eşleşmez; 6 haneyi sabit varsaydım.
  • Türkçe karakter (ç/ğ/ı/ş) önekte beklenmiyor; baştaki/sondaki boşluk \b sayesinde eşleşmeyi bozmaz.

Test dizeleri (senin verdiklerinden farklı)

Eşleşmeli:

  • Dekont AB-2024-000501 ekte gönderildi.AB-2024-000501
  • MUH-2026-100000 ve KDV-2026-100001 aynı satırda → ikisi de (g bayrağı)

Eşleşmemeli:

  • AB-26-000501 → yıl 2 haneli, tutmaz
  • fd-2026-000501 → küçük harf önek, tutmaz

ÜRETİM: TEM 2026 · CLAUDE Bu kayıt eşlenmiş örnek girdi ve çıktı içerir. Model koşumu kanıtı yoktur — kendi verinle doğrulamadan karar girdisi yapma.

Kendi verinle çalıştır
Verini aşağıya yapıştır; prompt seninkiyle birleşip çalıştırmaya hazır tek bloğa dönüşsün. Sonra tek dokunuşla Claude ya da ChatGPT'de aç.
Hazır prompt — verini bekliyor
Görevin: sana vereceğim örneklerden ÇALIŞAN bir regex üretmek ve sınırını açıkça yazmak. Uydurma yapma, örnekte olmayan durumu tahmin etme.

BAĞLAM:
- Regex motoru/dili: [ör. Python re / JavaScript / PCRE / grep -E / .NET — birini yaz]
- Ne ayıklamak/eşleştirmek istiyorum (tek cümle): [buraya yaz]

EŞLEŞMELİ (bunlar yakalanmalı, her satıra bir örnek):
[gerçek verinden örnekleri yapıştır]

EŞLEŞMEMELİ (bunlar yakalanmamalı, her satıra bir örnek):
[en az 2 karşı örnek yapıştır; hiç yoksa "yok" yaz]

KURALLAR:
1. Sadece yukarıdaki örneklere dayan. Örnekte görünmeyen bir durumu (yeni bir format, ayraç, uzunluk) varsaymak yerine belirt.
2. EŞLEŞMEMELİ listesi boşsa veya verdiğim örnekler regexi tek bir anlama getirmeye yetmiyorsa, tahmin yürütme; "EKSIK: ..." yaz ve hangi örneği eklememi istediğini net söyle.
3. Önce tek satırlık regexi ver. Sonra parçalarını sırayla açıkla: her grup / karakter sınıfı ne işe yarıyor.
4. "YAKALAR / KAÇIRIR" başlığı altında yaz: EŞLEŞMELİ örneklerimin hepsini yakalıyor mu; hangi sınır durumunu kaçırabilir (baştaki/sondaki boşluk, büyük-küçük harf, Türkçe karakter ç/ğ/ı/ş, satır sonu, çok uzun/çok kısa girdi).
5. Kendimin doğrulayabilmesi için, benim verdiklerimden FARKLI 2 eşleşmesi gereken + 2 eşleşmemesi gereken kısa test dizesi öner.

ÇIKTI SIRASI: Regex → Parça açıklaması → Yakalar/Kaçırır → Test dizeleri.

Yapıştırdığın veri tarayıcından çıkmaz — WhiteYaka'ya gönderilmez. Prompt panoya kopyalanır; açılan sohbete Ctrl/⌘ + V ile yapıştırırsın.

i Bu föy örnek girdi ve çıktı içerir; yapısal doğrulama ve ölçütlü prompt koşumu henüz kaydedilmedi.

Bülten kaydı kapalı.

Bu sayfa e-posta adresi toplamaz ve liste kaydı başlatmaz. 160 hamlenin tamamı giriş yapmadan açık.