Ce face RegExpMatch.namedGroup
În loc să numeri parantezele, poți da nume grupurilor: (?<an>\d{4}). Apoi citești valoarea cu m.namedGroup('an'). Codul devine mai ușor de citit și nu se strică dacă adaugi alte grupuri în model.
Grupurile cu nume au și număr, ca orice grup, deci m[1] funcționează în continuare. groupNames returnează numele tuturor grupurilor. Dacă ceri un nume care nu există în model, namedGroup aruncă ArgumentError; dacă grupul există dar nu a participat la potrivire, returnează null.
Parametri
| Parametru | Descriere |
|---|---|
name |
Numele grupului din model. |
Ce returnează
Un String?.
Exemple
Exemplul 1: O dată cu grupuri cu nume
void main() {
final data = RegExp(r'(?<an>\d{4})-(?<luna>\d{2})-(?<zi>\d{2})');
var m = data.firstMatch('Factura emisă la 2026-10-19')!;
print(m.namedGroup('zi'));
print(m.namedGroup('luna'));
print(m.namedGroup('an'));
print(m.groupNames.toList());
print(m[1]);
}
Rezultat
19
10
2026
[an, luna, zi]
2026
Exemplul 2: Un rând de jurnal (log)
void main() {
final log = RegExp(r'^\[(?<nivel>\w+)\] (?<ora>[\d:]+) (?<mesaj>.*)$', multiLine: true);
var text = '''[INFO] 09:00:01 Server pornit
[EROARE] 09:15:22 Conexiune pierdută la baza de date
[INFO] 09:15:30 Reconectare reușită''';
for (var m in log.allMatches(text)) {
if (m.namedGroup('nivel') == 'EROARE') {
print('La ${m.namedGroup('ora')}: ${m.namedGroup('mesaj')}');
}
}
}
Rezultat
La 09:15:22: Conexiune pierdută la baza de date
Greșeli frecvente
- Scrii numele greșit în
namedGroup('Luna'). Numele face diferența între litere mari și mici și, dacă nu există, se aruncăArgumentError.
Comenzi înrudite
RegExpMatch: Rezultatul unei căutări cu RegExp: textul găsit, grupurile din paranteze și pozițiile de început și sfârșit.RegExp.firstMatch: Caută prima potrivire a modelului în text și o returnează cu poziții și grupuri, sau null dacă nu există.RegExp: O expresie regulată: un model de text cu care cauți, verifici sau înlocuiești bucăți dintr-un text.