Ce face Regex (IsMatch, Matches, Replace, GeneratedRegex)
Clasa System.Text.RegularExpressions.Regex caută modele în text. Modelele se scriu de obicei ca șiruri verbatim @"...", ca backslash-ul să nu trebuiască dublat. IsMatch răspunde da/nu, Match dă prima potrivire, Matches pe toate, Replace înlocuiește, Split taie textul, iar Count (.NET 7) le numără.
Grupurile între paranteze se citesc cu m.Groups[1].Value sau, pentru grupuri cu nume (?<zi>\d{2}), cu m.Groups["zi"].Value. În Replace, $1 sau ${zi} reintroduc grupul în textul nou.
Atributul [GeneratedRegex] (.NET 7) pe o metodă static partial generează la compilare codul de căutare: e mai rapid la pornire și verificat de compilator. E varianta recomandată pentru modele fixe folosite des.
Exemple
Exemplul 1: Verificare, extragere și înlocuire
using System.Text.RegularExpressions;
Console.WriteLine(Regex.IsMatch("0740123456", @"^07\d{8}$"));
Console.WriteLine(Regex.IsMatch("074012", @"^07\d{8}$"));
string text = "Comenzi: #1024 (Ana), #87 (Mihai), #3301 (Ioana)";
foreach (Match m in Regex.Matches(text, @"#(\d+) \((\w+)\)"))
Console.WriteLine($"{m.Groups[2].Value}: comanda {m.Groups[1].Value}");
Console.WriteLine(Regex.Count(text, @"#\d+"));
Console.WriteLine(Regex.Replace("Tel: 0740 123 456", @"\s+", ""));
Console.WriteLine(Regex.Replace("2026-10-25", @"(\d{4})-(\d{2})-(\d{2})", "$3.$2.$1"));
Rezultat
True
False
Ana: comanda 1024
Mihai: comanda 87
Ioana: comanda 3301
3
Tel:0740123456
25.10.2026
Exemplul 2: [GeneratedRegex] și grupuri cu nume
using System.Text.RegularExpressions;
string[] emailuri = ["ana@exemplu.ro", "mihai@", "ioana.pop@firma.com"];
foreach (string e in emailuri)
Console.WriteLine($"{e}: {Modele.Email().IsMatch(e)}");
Match m = Modele.Data().Match("Factura din 25.10.2026, scadentă în 30 de zile");
if (m.Success)
Console.WriteLine($"zi {m.Groups["zi"].Value}, luna {m.Groups["luna"].Value}, an {m.Groups["an"].Value}");
static partial class Modele
{
[GeneratedRegex(@"^[^@\s]+@[^@\s]+\.[a-z]{2,}$", RegexOptions.IgnoreCase)]
public static partial Regex Email();
[GeneratedRegex(@"(?<zi>\d{2})\.(?<luna>\d{2})\.(?<an>\d{4})")]
public static partial Regex Data();
}
Rezultat
ana@exemplu.ro: True
mihai@: False
ioana.pop@firma.com: True
zi 25, luna 10, an 2026
Greșeli frecvente
- Model fără ancore:
\d{10}se potrivește și în"tel 07401234567890". Pentru validare folosește^și$. - În șiruri obișnuite (fără
@)"\d"nu se compilează; scrie@"\d"sau"\\d". - Textul de la utilizator pus direct într-un model poate conține caractere speciale (
.,*,(). Scapă-l cuRegex.Escape. Pentru date nesigure dă și unmatchTimeout.
Întrebări & Exemple de Cod:
Regex (IsMatch, Matches, Replace, GeneratedRegex)Ai o nelămurire despre utilizarea comenzii
Regex (IsMatch, Matches, Replace, GeneratedRegex)sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.