Am avut de facut urmatoarea chestie : de citit fisiere dintr-un folder si updatat text-ul din ele ( erau niste csv-uri) cu portiuni din denumire( de exemplu, daca fisierul se numeste vinzari_123 sa pun in fisier 123 la fiecare rind) . Normal ca m-am gindit sa il fac cit mai “extensibil” – pentru ca nu stiu forma sub care vin fisierele – asa ca m-am gindit sa evaluez ceea ce obtin cu expresii regulate – si sa le pun intr-un fisier de configurare( despre ConfigurationSection intr-un post viitor). Dar nu mai tineam minte sintaxa – in schimb tineam minte ca Roy Osherove a facut un Regulazy ( vedeti pagina http://weblogs.asp.net/rosherove/pages/tools-and-frameworks-by-roy-osherove.aspx ).
Cum se utilizeaza : Pui textul in casuta si apesi Regex_edit
Incepi sa subliniezi portiuni din text si dai click dreapta ( eu am facut asta cu vinzari –si am selectat “1 or more anything”. Apoi am selectat _ , am dat click dreapta si am selectat “exactly _” . In sfirsit am selectat 123 ,am dat click dreapta si am selectat “digits”.Iar click dreapta pe 123 selectat si dau “rename” – si ii pun numele “values”. Daca apas acum pe “test again input” se vede clar ca obtin in “values” ce am nevoie – si anume 123.
Ce mai am de facut este sa apas pe “generate” si a iesit codul :
public void SampleRegexUsage()
{
string regex=@"^\w+?_(?<values>\d+)$";
RegexOptions options = RegexOptions.Multiline;
string input= @"vinzari_123";
MatchCollection matches = Regex.Matches(input,regex,options);
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
Console.WriteLine("values:" + match.Groups["values"].Value);
}
}
( ma rog, trebuie sa scot multiline si sa scot ^ de la inceput … – dar fara asta e corect!)
Eu zic ca e un tool super rapid si usor de folosit( si free ;-) – si bun pentru cazul cind nu folosesti de multe ori expresii regulate.