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

Grupuri denumite și referințe din spate

Când numărul de grupuri crește, rețineți că $2 este „luna” și $5 este „anul” devine fragil. Sintaxa (?<name>...) vă permite numiți un grup: îl accesați după nume prin groups.name (și în înlocuiri ca $<name>).

Code
Pattern: (?<anno>\d{4})-(?<mese>\d{2})-(?<giorno>\d{2})
Sample:  2024-03-15
Gruppi:
  anno    = "2024"
  mese    = "03"
  giorno  = "15"

Editorul arată grupurile numite lângă meci.

Backreference

O backreference vă permite să faceți referire, în interiorul aceluiași model, la o captură anterioară. Sintaxa:

  • \1, \2, … -- referință numerotată (la grupul 1, 2, …).
  • \k<name> -- referință denumită.
Code
Pattern: \b(\w+)\s+\1\b
Sample:  un test un test il il gatto
                                ^^^^^

Se potrivește cu cuvinte duplicate consecutive: (\w+) captează un cuvânt, apoi \s+\1 necesită un spațiu și același cuvânt.

Cod de auto-documentare și referințe cu nume

Grupurile denumite îmbunătățesc lizibilitatea codului JavaScript: în loc să vă referiți la match[1], accesați match.groups.name. În interiorul modelului în sine, referirea lor se face cu sintaxa \\k<name>.

Încearcă

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

Găsiți fiecare dată în format AAAA-LL-ZZ denumind grupurile `anno`, `mese`, `giorno`.

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

Sintaxă: (?<nume>model). Meciul arată grupele sub intrarea „numită”.

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

Exercițiu de revizuire

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

Găsiți cuvinte duplicate consecutive (de exemplu, `il il`, `casa casa`). Utilizați un grup pentru primul și o referință în spate `\\1` pentru al doilea.

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

\\b(\\w+)\\s+\\1\\b: primul cuvânt este (\\w+), apoi un spațiu, apoi același cuvânt \\1.

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

Provocare suplimentară

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

Find HTML/XML tag pairs (e.g. `<b>text</b>` or `<i>text</i>`) ensuring that the closing tag matches the opening tag using a named backreference.

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

Atribuiți numele (?&lt;etichetă&gt;\\w+) și închideți-l cu \\k&lt;etichetă&gt;.

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