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:
- Kendisini tanımlayan bağlam olmadan bir değer çıkarın.
- Bir dizeyi birden fazla bağımsız koşula göre doğrulayın.
- Filtre bazı koşulları karşılayan ancak bazılarını karşılamayan eşleşmeleri.
Şifre doğrulama
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
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
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.
İ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
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.
İ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
Extract only numerical digits that are enclosed exactly between parentheses, e.g. extract `102` from `(102)` without capturing the parentheses.
İ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