Pelajaran modul (2/4)
Pandangan ke depan negatif: `(?!...)`
Pandangan ke depan negatif (?!...) adalah saudara gelap dari pandangan ke depan yang positif:
itu mengharuskan pola yang diberikan TIDAK mengikuti posisi saat ini. Itu benar
masih lebar nol: tidak ada karakter yang digunakan.
Pattern: \d+(?! euro)
Sample: Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
^^Hanya 75 yang cocok, karena hanya itu urutan angka yang TIDAK diikuti
euro. Digit 100 dan 25 diikuti oleh euro dan adalah
dikecualikan.
Pola pandangan ke depan yang negatif
^(?!.*errore).*$-- baris yang TIDAK mengandung kata "errore".\b(?!the\b)\w+\b-- sebuah kata yang bukanthe.(?!\s)-- posisi saat ini BUKAN spasi (berguna sebagai "trim").
Pattern: ^(?!.*\.bak$).*$
Sample (multiline with flag m):
foto.jpg
backup.bak
documento.txt
Match: foto.jpg, documento.txt (excludes backup.bak)Pengecualian lanjutan melalui pandangan ke depan yang negatif
Pandangan ke depan negatif (?!...) sangat penting untuk menerapkan logika pengecualian (seperti memverifikasi bahwa kata sandi tidak berisi kata-kata kamus atau bahwa pengidentifikasi bukan kata kunci khusus seperti class atau function).
Cobalah
Temukan setiap angka TIDAK diikuti dengan 'euro' (tidak termasuk harga euro).
Tunjukkan petunjuk
Gunakan (?! ...) untuk mengatakan 'TIDAK boleh mengikuti'. Urutan ` euro` tidak boleh muncul setelahnya.
Solusi tersedia setelah 3 upaya
Tinjau latihan
Temukan setiap kata yang terdiri dari minimal 3 huruf yang BUKAN 'the' (tidak peka huruf besar-kecil).
Tunjukkan petunjuk
Tepat setelah \\b buka pandangan ke depan negatif (?!the\\b) yang hanya mengecualikan kata the.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
Find all words consisting of letters that do not contain the letter `x` at any position (e.g. match `test`, `game` but not `extra`, `box`).
Tunjukkan petunjuk
Gunakan pandangan ke depan negatif (?!\\w*x) tepat setelah batas kata \\b.
Solusi tersedia setelah 3 upaya