RegExp.allMatches în Dart

Returnează toate potrivirile modelului în text, ca o colecție de obiecte RegExpMatch.

Sintaxă
Iterable<RegExpMatch> allMatches(String input, [int start = 0])

Ce face RegExp.allMatches

allMatches(text) găsește toate potrivirile, de la stânga la dreapta, fără suprapuneri. Rezultatul este un Iterable leneș: căutarea se face pe măsură ce îl parcurgi cu for, map sau toList().

Cel mai des îl transformi imediat: .map((m) => m[0]!) pentru textele găsite, .length pentru numărul lor. Al doilea parametru, opțional, spune de la ce poziție începe căutarea. Dacă nu există nicio potrivire, colecția este goală.

Parametri

Parametru Descriere
input Textul în care se caută.
start Poziția de la care se caută.

Ce returnează

Un Iterable<RegExpMatch>.

Exemple

Exemplul 1: Toate numerele dintr-un text

void main() {
  final numar = RegExp(r'\d+');
  var text = 'Am cumpărat 3 caiete cu 12 lei și 2 pixuri cu 5 lei';
  var numere = numar.allMatches(text).map((m) => int.parse(m[0]!)).toList();
  print(numere);
  print('Potriviri: ${numar.allMatches(text).length}');
  print(numar.allMatches('fără cifre').isEmpty);
}

Rezultat

[3, 12, 2, 5]
Potriviri: 4
true

Exemplul 2: Hashtag-uri și poziții

void main() {
  final hashtag = RegExp(r'#(\w+)');
  var postare = 'Weekend la munte! #Brasov #drumetie #toamna2026';
  for (var m in hashtag.allMatches(postare)) {
    print('${m[1]} (poziția ${m.start}-${m.end})');
  }
}

Rezultat

Brasov (poziția 18-25)
drumetie (poziția 26-35)
toamna2026 (poziția 36-47)

Greșeli frecvente

  • Parcurgi rezultatul de mai multe ori: de fiecare dată căutarea se face din nou. Dacă îl folosești des, salvează-l cu toList().

Comenzi înrudite

  • RegExp.firstMatch: Caută prima potrivire a modelului în text și o returnează cu poziții și grupuri, sau null dacă nu există.
  • RegExpMatch: Rezultatul unei căutări cu RegExp: textul găsit, grupurile din paranteze și pozițiile de început și sfârșit.
  • String.allMatches: Găsește toate aparițiile unui text în alt text și le returnează ca obiecte Match, cu poziții.