regulární výrazy
Regex
Třída Regex nám umožňuje pracovat s
regulárními výrazy.
(jsou psány pro PHP, ale maska pro výraz se píše skoro stejně)
Třída je obsažena v jmenném prostoru
using System.Text.RegularExpressions.
Vytvoření masky:
Regex regMaska = new Regex(maska);
Metody:
IsMatch (zjednodušená kontrola emailové adresy)
public static bool JeMail(string Text)
{
Regex regMaska = new Regex(@".*@.*\..*");
return regMaska.IsMatch(Text);
}
- @ - Modifikátor @ zabrání zpracovávat escape-sekvence.
- . -Tečka znamená libovolný znak.
- * -Hvězdička znamená libovolný počet znaků před ní.
- @ -Znak zavináče znamená přesně tento znak.
- . -Opět libovolný znak.
- * -Opět libovolný počet znaků před ní.
- \. -Tzv. escape-sekvence. Dovolí přímo zapsat znak tečku (nebude brána jako libovolný znak) .
- . -Opět libovolný znak.
- * -Opět libovolný počet znaků před ní.
Matches
public string matchesVysledek()
{
vysledek = null;
foreach (Match s in regMaska.Matches(text))
{
vysledek += s.Value + " na pozici " + s.Index+" \n";
}
return vysledek;
}
Replace
public string replaceVysledek(string nahrada)
{
vysledek = regMaska.Replace(text, nahrada);
return vysledek;
}
Split
public string[] splitVysledek(string text)
{
string[] vysledek1 = regMaska.Split(text);
//alternativní zápis (lze použít pro všechny předchozí metody)
string[] vysledek2 = Regex.Split(text, maska);
return vysledek1;
}
Match
Vlastnosti:
- Index -Pozice v původním řetězci, kde se nachází první znak zachyceného podřetězce.
- Length -Délka zachyceného podřetězce.
- Success -Vrátí true pokud je zachycen podřetězec.
- Value -Vrátí zachycený podřetězec.
Metody:
- NextMatch -Nastaví další podřetězec pokud existuje.
Match vysledek = Regex.Match(text,maska);
labelVysledek.Text = "";
while (vysledek.Success)
{
labelVysledek.Text += vysledek.Value + " na pozici " + vysledek.Index+" o délce "+vysledek.Length+"\n";
vysledek = vysledek.NextMatch();
}