Ce face RegExp.firstMatch
firstMatch(text) returnează un obiect RegExpMatch pentru prima potrivire, sau null. Din el afli textul găsit (m[0]), grupurile din paranteze (m[1], m[2]…), pozițiile start și end și grupurile cu nume.
Pentru că rezultatul poate fi null, verifică-l înainte de folosire: cu if (m != null), cu ?. sau cu un pattern if (re.firstMatch(t) case final m?). Este metoda potrivită pentru a „desface” un text structurat (o dată, un cod, o adresă) în bucăți.
Parametri
| Parametru | Descriere |
|---|---|
input |
Textul în care se caută. |
Ce returnează
Un RegExpMatch?.
Exemple
Exemplul 1: Desfacerea unei date
void main() {
final data = RegExp(r'(\d{1,2})\.(\d{1,2})\.(\d{4})');
var m = data.firstMatch('Examenul este pe 15.6.2026, la ora 9.');
if (m != null) {
print('Găsit: ${m[0]} la poziția ${m.start}');
print('zi=${m[1]}, lună=${m[2]}, an=${m[3]}');
var d = DateTime(int.parse(m[3]!), int.parse(m[2]!), int.parse(m[1]!));
print(d.weekday == DateTime.monday ? 'Este luni' : 'Ziua ${d.weekday}');
}
print(data.firstMatch('fără dată'));
}
Rezultat
Găsit: 15.6.2026 la poziția 17
zi=15, lună=6, an=2026
Este luni
null
Exemplul 2: Numărul de înmatriculare
Folosim un pattern case ca să lucrăm doar cu potrivirile care nu sunt null.
void main() {
final numar = RegExp(r'^([A-Z]{1,2})\s?(\d{2,3})\s?([A-Z]{3})$');
for (var text in ['IS 12 ABC', 'B123XYZ', 'CJ-07-DEF']) {
if (numar.firstMatch(text) case final m?) {
print('$text: județ ${m[1]}, număr ${m[2]}, litere ${m[3]}');
} else {
print('$text: format necunoscut');
}
}
}
Rezultat
IS 12 ABC: județ IS, număr 12, litere ABC
B123XYZ: județ B, număr 123, litere XYZ
CJ-07-DEF: format necunoscut
Greșeli frecvente
- Folosești
m[1]caStringdirect: grupurile suntString?. Adaugă!când știi sigur că grupul există sau?? ''.
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.allMatches: Returnează toate potrivirile modelului în text, ca o colecție de obiecte RegExpMatch.RegExp.hasMatch: hasMatch spune dacă modelul apare în text; stringMatch returnează textul primei potriviri sau null.RegExpMatch.namedGroup: Returnează textul prins de un grup cu nume, scris în model ca (?<nume>…).