Lompati ke konten utama
Modul 6 · Pelajaran 2 dari 422/32 dalam kursus~10 min
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.

Code
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 bukan the.
  • (?!\s) -- posisi saat ini BUKAN spasi (berguna sebagai "trim").
Code
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

Latihan#regex.m6.l2.e1
Upaya: 0Memuat…

Temukan setiap angka TIDAK diikuti dengan 'euro' (tidak termasuk harga euro).

Memuat editor…
Tunjukkan petunjuk

Gunakan (?! ...) untuk mengatakan 'TIDAK boleh mengikuti'. Urutan ` euro` tidak boleh muncul setelahnya.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#regex.m6.l2.e2
Upaya: 0Memuat…

Temukan setiap kata yang terdiri dari minimal 3 huruf yang BUKAN 'the' (tidak peka huruf besar-kecil).

Memuat editor…
Tunjukkan petunjuk

Tepat setelah \\b buka pandangan ke depan negatif (?!the\\b) yang hanya mengecualikan kata the.

Solusi tersedia setelah 3 upaya

Tantangan tambahan

Latihan#regex.m6.l2.e3
Upaya: 0Memuat…

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`).

Memuat editor…
Tunjukkan petunjuk

Gunakan pandangan ke depan negatif (?!\\w*x) tepat setelah batas kata \\b.

Solusi tersedia setelah 3 upaya