Ce face RegExp.escape
În expresiile regulate, caractere ca ., *, +, ?, (, ), [, $ au sens special. Dacă vrei să cauți un text care le conține (de exemplu 3.5 sau (Iași)), trebuie „scăpate” cu \. RegExp.escape(text) face asta automat.
Este necesară mai ales când textul căutat vine de la utilizator: un câmp de căutare în care cineva scrie c++ ar da altfel o expresie greșită. Combină textul scăpat cu alte bucăți de model, de exemplu RegExp('\\b${RegExp.escape(cuvant)}\\b').
Parametri
| Parametru | Descriere |
|---|---|
text |
Textul care trebuie căutat literal. |
Ce returnează
Un String care poate fi folosit ca model.
Exemple
Exemplul 1: Caractere speciale scăpate
void main() {
print(RegExp.escape('3.5'));
print(RegExp.escape('(Iași)'));
print(RegExp.escape('c++ sau c#?'));
var gresit = RegExp('3.5');
var corect = RegExp(RegExp.escape('3.5'));
print(gresit.hasMatch('305'));
print(corect.hasMatch('305'));
print(corect.hasMatch('nota 3.5'));
}
Rezultat
3\.5
\(Iași\)
c\+\+ sau c#\?
true
false
true
Exemplul 2: Căutare după textul utilizatorului
void main() {
var produse = ['Cablu USB (1m)', 'Cablu USB (2m)', 'Mouse', 'Încărcător 2.4A'];
for (var cautat in ['(1m)', '2.4', 'usb']) {
final re = RegExp(RegExp.escape(cautat), caseSensitive: false);
print('$cautat: ${produse.where(re.hasMatch).toList()}');
}
}
Rezultat
(1m): [Cablu USB (1m)]
2.4: [Încărcător 2.4A]
usb: [Cablu USB (1m), Cablu USB (2m)]
Greșeli frecvente
- Pui textul utilizatorului direct în
RegExp(text). Un text ca(aruncăFormatException, iar.potrivește orice caracter.
Comenzi înrudite
RegExp: O expresie regulată: un model de text cu care cauți, verifici sau înlocuiești bucăți dintr-un text.RegExp.hasMatch: hasMatch spune dacă modelul apare în text; stringMatch returnează textul primei potriviri sau null.