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

Priviți în jur în practică

Să punem toate cele patru forme de privire în jur împreună în scenarii din lumea reală. Privirea în jur strălucește atunci când trebuie să:

  1. Extrageți o valoare fără contextul care o identifică.
  2. Validați un șir împotriva mai multor condiții independente.
  3. Filtrați potrivirile care îndeplinesc unele condiții, dar nu altele.

Validarea parolei

Code
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,}

Fiecare anticipare verifică o condiție, începând de la început (^). Ei sunt toate cu latime zero: motorul ramane in pozitia 0 si apoi consuma cu .{8,}$.

Extragerea între delimitatori

Code
Pattern: (?<=\().+?(?=\))
Sample:  Funzione foo(bar) e baz(qux, qix)
Match: "bar", "quux, qix" (without parentheses)

Lookbehind + lookahead + lazy quantifier: extrage conținutul ** din interior parantezele** fără a le include.

Combinând privirea înainte și în urmă

Folosirea împreună cu privirea înainte și în urmă permite izolarea șirurilor care se află în anumite etichete sau formate (de exemplu, extragerea textului între două etichete fără a include etichetele în potrivirea finală). Acest lucru evită operațiunile ulterioare de curățare a șirurilor.

Încearcă

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

Extrageți valoarea fiecărei atribuiri `key=value` din jurnal: NUMAI valorile (fără chei, fără `=`). Valorile pot conține litere și cifre.

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

Mutați `=` în interiorul unui lookbehind (?<==): în acest fel potrivirea conține doar valoarea.

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

Exercițiu de revizuire

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

Găsiți ce cuvinte au cel puțin O literă mare ȘI cel puțin O cifră (în orice ordine), localizându-le în text.

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

Privire dublă la început: (?=\\w*[A-Z])(?=\\w*\\d). Apoi consumați cuvântul cu \\w+.

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

Provocare suplimentară

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

Extract only numerical digits that are enclosed exactly between parentheses, e.g. extract `102` from `(102)` without capturing the parentheses.

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

Combine a positive lookbehind (?<=\( ) for the open parenthesis and a positive lookahead (?=\) ) for the closed one.

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