Salt la conținutul principal
Modulul 6 · Lecția 3 din 423/32 în curs~12 min
Lecții din modul (3/4)

Privește în urmă: `(?<=...)` `(?<!...)`

Lookbacks sunt imaginea în oglindă a lookaheads: se uită înainte poziția curentă, tot cu lățime zero.

  • (?<=...) -- privire pozitivă: modelul trebuie să preceadă.
  • (?<!...) -- aspect negativ din urmă: modelul NU trebuie să preceadă.
Code
Pattern: (?<=\$)\d+
Sample:  Costo $100, sconto -25, totale $75.
                ^^^                  ^^

$ nu este în potrivire, dar funcționează ca condiție: doar cifre precedat de potrivirea semnului dolarului.

Privire negativă în urmă

Code
Pattern: (?<!\w)\d+
Sample:  Codice abc123 e numero 456.
                              ^^^

(?<!\w) necesită ca înaintea cifrelor să nu existe niciun caracter de cuvânt: abc123 este exclus (înainte de 123 există c, un \w), 456 (înainte de există un spațiu).

Diferența cheie față de grupul fără captură

Code
\\$\\d+         matches "$100": the match includes the dollar sign.
(?<=\\$)\\d+    matches "100":  the match contains ONLY the digits.

Dacă trebuie să extrageți valoarea „curată” fără prefix, uitați în urmă este alegerea corectă.

Compatibilitate din urmă în JavaScript

(?<=...) pozitiv și (?<!...) negativ, verifică ce precede poziția curentă. În JavaScript, acestea sunt acceptate începând cu ES2018; în browserele mai vechi sau motoarele vechi Node.js, acestea ar provoca erori de compilare de sintaxă.

Încearcă

Exercițiu#regex.m6.l3.e1
Încercări: 0Se încarcă…

Extrageți doar suma numerică (fără semnul $) din prețurile din text.

Se încarcă editorul...
Afișează indiciu

Mutați \\$ într-o privire pozitivă în urmă (?<=\\$): o condiție de poziție, care nu face parte din potrivire.

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#regex.m6.l3.e2
Încercări: 0Se încarcă…

Găsiți fiecare succesiune de cifre NU precedate de o literă sau cifră (adică numere „izolate”, nu părți de cod precum „abc123”).

Se încarcă editorul...
Afișează indiciu

Utilizați o privire negativă în urmă (?<!\\w) pentru a exclude când există o literă sau o cifră înainte.

Soluție disponibilă după 3 încercări

Provocare suplimentară

Exercițiu#regex.m6.l3.e3
Încercări: 0Se încarcă…

Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.

Se încarcă editorul...
Afișează indiciu

Mutați semnul minus - în interiorul unei priviri pozitive în urmă (?<=-).

Soluție disponibilă după 3 încercări