İnteraktif kurs
Regex Kursu
Her modeli doğrudan tarayıcıda çalıştıran ve eşleşmeleri gerçek zamanlı olarak gösteren bir motorla, İngilizce normal ifadeleri sıfırdan öğrenin.
01 · Modül 1 – Temel Bilgiler
Regex'in temelleri: değişmez kalıplar, temel karakter sınıfları, `.` joker karakteri ve kaçış meta karakterleri.
- 1.1Değişmez kalıplarNormal karakterler, büyük/küçük harf duyarlılığı ve ilk çalıştırma: eşleştirme ve dizin.~8 min
- 1.2Temel sınıflar: \d \w \sRakamlar, sözcük karakterleri ve boşluklar (ve bunların olumsuzlanmış sürümleri) için önceden tanımlanmış sınıflar.~10 min
- 1.3Joker karakter: nokta `.``.` karakteri neredeyse her şeyle eşleşir: neleri içerir, neleri hariç tutar ve `s` bayrağının neden önemli olduğu.~8 min
- 1.4Meta karakterlerden kaçışÇift ters eğik çizgiye ihtiyaç duyduğunuzda `\` ile kaçmanız gereken 12 meta karakter ve nedeni.~10 min
02 · Modül 2 – Niceleyiciler
Ne kadar tekrarlanacak: `*`, `+`, `?`, aralıklar `{n,m}` ve açgözlü ile tembel arasındaki fark.
- 2.1`*`, `+`, `?`Sıfır veya daha fazla, bir veya daha fazla, isteğe bağlı: üç temel niceleyici.~10 min
- 2.2Tam miktarlar `{n,m}`Tam olarak 'n', 'n'den 'm'ye, en azından 'n': sayısal niceleyici.~10 min
- 2.3Açgözlü vs tembelVarsayılan olarak niceleyiciler açgözlüdür (`.*`); Tembel sürüm için `?` ekleyin (`.*?`).~10 min
- 2.4Geri izleme: genel bakışAçgözlü bir niceleyici başarısız olduğunda motorun ne yaptığı ve neden pahalı olabileceği.~12 min
03 · Modül 3 – Sabitleme noktaları ve sınırlar
Karakterler değil konum: dizenin başına/sonuna, kelime sınırlarına ve 'm' bayrağıyla her satırın başına/sonuna sabitleme.
- 3.1Başlangıç ve bitiş: `^` ve `$`Bir modeli dizenin ilk veya son karakterine sabitlemek.~8 min
- 3.2Kelime sınırları: `\b` `\B`Kelime ve kelime olmayan karakterler arasındaki geçiş; tüm kelimeleri bulmak.~10 min
- 3.3'm' bayrağı: çok satırlı'M' bayrağıyla, '^' ve '$' her satırın başına/sonuna sabitlenir.~10 min
- 3.4Boş satırlar ve kırpmaYararlı desenler: boş satırları eşleştirmek, satırın başındaki/sonundaki boşlukları kırpmak.~10 min
04 · Modül 4 – Gruplar ve dönüşüm
`()` ile gruplayın, `|` ile alternatifler arasından seçim yapın, `(?:...)` ile yakalamaktan kaçının, grupları `(?<name>...)` ile adlandırın ve geri referanslarla önceki bir yakalamaya geri dönün.
- 4.1Yakalama grupları: `(...)`Gruplamak ve yakalamak için parantezler; maçlarda 1, 2, 3… gruplarına erişin.~10 min
- 4.2Dönüşüm: `|`Boru, iki veya daha fazla alt model arasından seçim yapar; öncelik ve parantez.~10 min
- 4.3Yakalanmayan gruplar: `(?:...)`Yakalama oluşturmadan gruplandırın: yalnızca ölçüm yapmanız veya değiştirmeniz gerektiğinde kullanışlıdır.~10 min
- 4.4Adlandırılmış gruplar ve geri referanslarİsim vermek için `(?<name>...)`; Yakalamaya geri dönmek için `\1` `\k<name>`.~12 min
05 · Modül 5 — Karakter sınıfları
Özel kümeleri "[...]" ile tanımlayın, aralıkları kullanın, "[^...]" ile olumsuzlayın ve "\p{...}" ve "u" bayrağıyla Unicode özelliklerine ulaşın.
- 5.1Karakter kümeleri: `[abc]`Köşeli parantezler, bir konumda izin verilen karakter kümesini tanımlar.~8 min
- 5.2Sınıfların içindeki aralıklar: `[a-z0-9]`Kısa çizgi aracılığıyla aralıklar; aralıkları ve tek karakterleri birleştirmek.~8 min
- 5.3Olumsuzluk: `[^...]`Olumsuzlanmış bir sınıf, listelenen karakterler **hariç** herhangi bir şeyle eşleşir.~8 min
- 5.4Unicode özelliği kaçar`\p{L}`, `\p{N}`, `\p{Script=...}`, `u` bayrağıyla: anlamsal Unicode sınıfları.~12 min
06 · Modül 6 — Çevreye Bakış
Sıfır genişlikli iddialar: karakter tüketmeden dizede ileriye veya geriye bakın. İleriye bak `(?=)` `(?!)`, arkaya bak `(?<=)` `(?<!)`.
- 6.1Olumlu bakış: `(?=...)`Belirli bir modelin geçerli konumu tüketmeden takip edip etmediğini kontrol edin.~10 min
- 6.2Negatif bakış açısı: `(?!...)`Belirli bir modelin mevcut konumu takip ETMEDİĞİNİ kontrol edin.~10 min
- 6.3Arkaya bakma: `(?<=...)` `(?<!...)`Etrafı incelemenin "geriye bakma" versiyonları; ES2018+ desteği.~12 min
- 6.4Pratikte etrafa bakışBağlamı dahil etmeden bir değer çıkarın, şifreleri doğrulayın, sınırlandırılmış sayıları ayrıştırın.~12 min
07 · Modül 7 — Bayraklar, değişiklik, bölme
Tüm işaretler (`d`, `v` dahil), regex ile `String.prototype.replace`/`replaceAll`/`split`, değiştirme dizesinde `$1`/`$<name>`ye başvurur ve geri çağırmaları değiştirir.
- 7.1Tüm bayraklar ayrıntılı olarak`g i m su v y d`: her biri ne yapar ve nasıl birleşirler.~12 min
- 7.2Temel değiştirme ve "1$"Eşleşmeleri sabit bir dizeyle veya "$1" / "$<name>" geri referanslarıyla değiştirin.~10 min
- 7.3Geri aramayla değiştirinDeğiştirme işlevi: her eşleşmeyi isteğe bağlı JS koduyla dönüştürün, gruplara erişim.~12 min
- 7.4Normal ifadeyle bölBir dizeyi bir desene göre bölün (izin veren CSV, minimum belirteç).~10 min
08 · Modül 8 – Uygulama
Gerçek sorunlar üzerinde hepsini bir araya getirin: e-postaları doğrulayın, günlükleri ayrıştırın, URL'leri/IP'leri çıkarın, ReDoS'a dayanıklı modeller yazın.
- 8.1Bir e-postayı doğrulamaTakasların açıklandığı e-postalar için "yeterince iyi" bir model.~12 min
- 8.2Apache günlük ayrıştırıcısıAdlandırılmış grupları kullanarak bir günlük satırından IP, yöntem, yol ve durum kodunu çıkarın.~12 min
- 8.3URL'leri ve IP'leri çıkarmaSerbest biçimli metindeki http(s) URL'lerini ve IPv4 adreslerini tanır.~12 min
- 8.4ReDoS güvenli kalıpların yazılmasıFelaket yaratan kalıpları tanıyın (`(a+)+b`), bunları yeniden düzenleyin, atom benzeri niceleyiciler kullanın.~14 min