Ce face RegExpMatch
Un RegExpMatch este o potrivire găsită de firstMatch sau allMatches. group(0) (sau m[0]) este tot textul găsit. group(1), group(2)… sunt bucățile prinse de parantezele din model, numărate de la stânga după paranteza care se deschide.
groupCount spune câte grupuri are modelul (fără grupul 0). Un grup care nu a participat la potrivire (de exemplu unul opțional, (...)?) are valoarea null. Un număr mai mare decât groupCount aruncă RangeError.
start este poziția primului caracter găsit, iar end poziția de după ultimul, deci text.substring(m.start, m.end) == m[0]. Grupurile cu nume se citesc cu namedGroup. Există și groups([1, 2]), care returnează mai multe grupuri ca listă.
Parametri
| Parametru | Descriere |
|---|---|
group |
Numărul grupului: 0 pentru tot textul, 1..groupCount pentru paranteze. |
Ce returnează
group: un String?. groupCount, start, end: int.
Exemple
Exemplul 1: Grupuri și poziții
void main() {
final ora = RegExp(r'(\d{2}):(\d{2})(:(\d{2}))?');
var text = 'Trenul pleacă la 14:35 din Iași.';
var m = ora.firstMatch(text)!;
print(m.group(0));
print(m.groupCount);
print('ora ${m.group(1)}, minutul ${m[2]}');
print(m[4]);
print('${m.start}-${m.end}: ${text.substring(m.start, m.end)}');
print(m.groups([1, 2]));
}
Rezultat
14:35
4
ora 14, minutul 35
null
17-22: 14:35
[14, 35]
Exemplul 2: Program de tren
void main() {
final rand = RegExp(r'(\w+)\s+(\d{2}:\d{2})\s+(\d+) lei');
var orar = '''
Suceava 06:10 45 lei
Bacau 08:25 38 lei
Brasov 11:40 72 lei''';
for (var m in rand.allMatches(orar)) {
print('${m[1]!.padRight(8)} la ${m[2]}, bilet ${m[3]} lei');
}
}
Rezultat
Suceava la 06:10, bilet 45 lei
Bacau la 08:25, bilet 38 lei
Brasov la 11:40, bilet 72 lei
Greșeli frecvente
- Numeri grupurile de la 0. Grupul 0 este tot textul găsit; primul grup din paranteze este
group(1). - Crezi că
endeste poziția ultimului caracter. Este poziția de după el, la fel ca lasubstring.
Comenzi înrudite
RegExpMatch.namedGroup: Returnează textul prins de un grup cu nume, scris în model ca (?<nume>…).RegExp.firstMatch: Caută prima potrivire a modelului în text și o returnează cu poziții și grupuri, sau null dacă nu există.RegExp.allMatches: Returnează toate potrivirile modelului în text, ca o colecție de obiecte RegExpMatch.