Pelajaran modul (3/4)
Lihat ke belakang: `(?<=...)` `(?<!...)`
Lihat ke belakang adalah cerminan dari pandangan ke depan: mereka terlihat sebelum posisi saat ini, masih lebarnya nol.
(?<=...)-- pandangan positif ke belakang: polanya harus mendahului.(?<!...)-- tampilan negatif di belakang: pola TIDAK boleh mendahului.
Pattern: (?<=\$)\d+
Sample: Costo $100, sconto -25, totale $75.
^^^ ^^$ tidak ada dalam pertandingan, tetapi berfungsi sebagai kondisi: hanya digit
didahului dengan pencocokan tanda dolar.
Pandangan negatif ke belakang
Pattern: (?<!\w)\d+
Sample: Codice abc123 e numero 456.
^^^(?<!\w) mengharuskan sebelum digit TIDAK ada karakter kata:
abc123 dikecualikan (sebelum 123 ada c, \w), 456 cocok (sebelum
ada spasi).
Perbedaan utama vs kelompok yang tidak menangkap
\\$\\d+ matches "$100": the match includes the dollar sign.
(?<=\\$)\\d+ matches "100": the match contains ONLY the digits.Jika Anda perlu mengekstrak nilai "bersih" tanpa awalan, lihat ke belakang adalah pilihan yang tepat.
Lihat di balik kompatibilitas dalam JavaScript
Positif (?<=...) dan negatif (?<!...) lihat ke belakang periksa apa yang mendahului posisi saat ini. Di JavaScript, mereka didukung mulai dari ES2018; di browser lama atau mesin Node.js lama, hal tersebut akan menyebabkan kesalahan kompilasi sintaksis.
Cobalah
Ekstrak hanya jumlah numerik (tanpa tanda $) dari harga di teks.
Tunjukkan petunjuk
Pindahkan \\$ ke dalam tampilan positif di belakang (?<=\\$): kondisi posisi, bukan bagian dari kecocokan.
Solusi tersedia setelah 3 upaya
Tinjau latihan
Temukan setiap rangkaian digit TIDAK diawali dengan huruf atau digit (yaitu angka 'terisolasi', bukan bagian kode seperti `abc123`).
Tunjukkan petunjuk
Gunakan tampilan negatif di belakang (?<!\\w) untuk mengecualikan jika ada huruf atau angka sebelumnya.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.
Tunjukkan petunjuk
Pindahkan tanda minus - di dalam tampilan positif ke belakang (?<=-).
Solusi tersedia setelah 3 upaya