Ana içeriğe geç
Modül 6 · Ders 4 ders 4Kurstaki 24/32~12 min
Modül dersleri (4/4)

Pratikte etrafa bakış

Dört bakış biçiminin tümünü gerçek dünya senaryolarında bir araya getirelim. Aşağıdakileri yapmanız gerektiğinde görünümler parlar:

  1. Kendisini tanımlayan bağlam olmadan bir değer çıkarın.
  2. Bir dizeyi birden fazla bağımsız koşula göre doğrulayın.
  3. Filtre bazı koşulları karşılayan ancak bazılarını karşılamayan eşleşmeleri.

Şifre doğrulama

Code
Pattern: ^(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z\d]).{8,}$
Checks:
  - at least one uppercase     (?=.*[A-Z])
  - at least one digit         (?=.*\d)
  - at least one symbol        (?=.*[^a-zA-Z\d])
  - minimum length 8           .{8,}

Her ileri bakış, baştan başlayarak bir koşulu kontrol eder (^). Onlar tamamı sıfır genişlikte: motor 0 konumunda kalır ve ardından .{8,}$.

Sınırlayıcılar arasında çıkarma

Code
Pattern: (?<=\().+?(?=\))
Sample:  Funzione foo(bar) e baz(qux, qix)
Match: "bar", "quux, qix" (without parentheses)

Geriye bakma + ileriye bakma + tembel nicelik belirteci: içeriği çıkarır içeride parantezleri eklemeden kullanın.

İleriye bakma ve arkaya bakmayı birleştirmek

İleriye bakma ve arkaya bakmanın birlikte kullanılması, belirli etiketler veya formatlar içinde yer alan dizelerin izole edilmesine olanak tanır (örneğin, etiketleri son eşleşmeye dahil etmeden iki etiket arasındaki metni çıkarmak). Bu, sonraki dize temizleme işlemlerini önler.

Deneyin

Egzersiz#regex.m6.l4.e1
Denemeler: 0Yükleniyor…

Günlükten her "anahtar=değer" atamasının değerini çıkarın: YALNIZCA değerler (anahtar yok, "=" yok). Değerler harf ve rakam içerebilir.

Düzenleyici yükleniyor…
İpucu göster

`=` öğesini geriye dönük (?<==) içine taşıyın: bu şekilde eşleşme yalnızca değeri içerir.

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#regex.m6.l4.e2
Denemeler: 0Yükleniyor…

Hangi kelimelerin en az BİR büyük harf VE en az BİR rakam (herhangi bir sırayla) içerdiğini metinde bulun.

Düzenleyici yükleniyor…
İpucu göster

Başlangıçta çift ileri bakış: (?=\\w*[A-Z])(?=\\w*\\d). Daha sonra kelimeyi \\w+ ile tüketin.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#regex.m6.l4.e3
Denemeler: 0Yükleniyor…

Extract only numerical digits that are enclosed exactly between parentheses, e.g. extract `102` from `(102)` without capturing the parentheses.

Düzenleyici yükleniyor…
İpucu göster

Combine a positive lookbehind (?<=\( ) for the open parenthesis and a positive lookahead (?=\) ) for the closed one.

3 denemeden sonra çözüm mevcut