(?<nume>…) (grup cu nume) în Expresii Regulare (RegEx)

Grupuri și referințe PCRE / ECMAScript (ES2018+) / Python Q&A / Distribuie cod

Asociază un nume descriptiv unui grup de captură pentru a accesa valoarea extrasă după cheie, nu doar după număr.

Tipar RegEx
(?<nume>pattern)   |   (?P<nume>pattern)   |   $<nume>

Ce face (?<nume>...) (grup cu nume)

Pe măsură ce o expresie regulară crește, urmărirea grupurilor după număr ($m[1], $m[4], $m[7]) devine fragilă și greu de citit: dacă adaugi ulterior o paranteză la începutul expresiei, toate numerele grupurilor următoare se decalează cu 1!

Grupurile de captură cu nume (Named Capturing Groups) rezolvă această problemă permițându-ți să botezi fiecare captură folosind sintaxa (?<nume>...) (suportată în PHP/PCRE, JavaScript ES2018+, C#, .NET) sau (?P<nume>...) (sintaxa originară din Python, suportată și în PHP). Rezultatul devine auto-documentat: $m['an'] sau match.groups.an.

Variante și sintaxă asociată

Expresie / Simbol Descriere
(?<nume>...) Sintaxa standard modernă (JS ES2018+, PHP/PCRE, C#, Java) pentru un grup cu nume.
(?P<nume>...) Sintaxa Python (acceptată și în PHP/PCRE) pentru definirea unui grup cu nume.
(?'nume'...) Sintaxă alternativă validă în PCRE (PHP) și .NET.
$<nume> În JavaScript replace(): inserează valoarea capturată de grupul cu numele specificat.
\k<nume> sau (?P=nume) Referință înapoi (backreference) în interiorul aceleiași expresii către grupul cu nume.

Exemple

Exemplul 1: Parsarea unei linii de log în PHP și JavaScript cu grupuri cu nume

Extragem data, nivelul de severitate și mesajul direct în chei asociative clare.

// PHP:
$log = "[2026-10-23] ERROR: Conexiunea la baza de date a eșuat";
$re  = '/^\[(?<data>\d{4}-\d{2}-\d{2})\]\s+(?<nivel>[A-Z]+):\s+(?<mesaj>.+)$/';
preg_match($re, $log, $m);

// În JavaScript (ES2018+):
// const { data, nivel, mesaj } = log.match(re).groups;

Potriviri găsite (Matches)

$m['data']  => "2026-10-23"
$m['nivel'] => "ERROR"
$m['mesaj'] => "Conexiunea la baza de date a eșuat"

Exemplul 2: Înlocuire lizibilă cu $<nume> în JavaScript

În loc de $1 și $2, folosim $<prenume> și $<nume> în șirul de replace.

// JavaScript:
const input = "Popescu, Andrei";
const formatat = input.replace(
    /^(?<nume>[A-Za-zăîâșțĂÎÂȘȚ]+),\s*(?<prenume>[A-Za-zăîâșțĂÎÂȘȚ]+)$/u,
    "$<prenume> $<nume>"
);

Potriviri găsite (Matches)

"Andrei Popescu"

Greșeli frecvente

  • În PHP (preg_match), un grup cu nume (?<an>\d{4}) populează în $matches atât cheia string ($matches['an']), cât și cheia numerică ($matches[1]), dublând dimensiunea array-ului dacă faci count($matches).
  • Folosirea cratimelor în numele grupului (ex. (?<cod-postal>\d{6})): numele grupurilor trebuie să fie identificatori valizi (doar litere, cifre și underscore, fără să înceapă cu o cifră: (?<cod_postal>\d{6})).

Simboluri și rețete înrudite

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: (?<nume>…) (grup cu nume)

Ai o nelămurire despre utilizarea comenzii (?<nume>…) (grup cu nume) sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.