C# - Keresési szabályok létrehozása

Regular Expressions 2. rész

forráskód letöltése
Ebben a részben megismerkedünk a keresésekben használható három új osztállyal, valamint megnézzük, hogy milyen lehetőségeink vannak a keresési minták létrehozására.
Az előző részben láthattuk, hogy a RegExpClass osztály az alapja a keresésnek. Amikor keresésnél az Execute metódust használtuk, szó volt róla, hogy a függvény egy kollekcióval tér vissza, melynek típusa MatchCollection. A kollekciót típuskényszerítéssel érhettük el.
MatchCollection m = (MatchCollection)r.Execute(textBox1.Text);
A MatchCollection osztály
Count
Osztály: MatchCollection
public int Count;
A találatok számát adja vissza.
Egy találatot a Match osztály képvisel.
A Match osztály
FirstIndex
Osztály: Match
public int FirstIndex;
A találat pozícióját adja vissza a szövegrészben, amelyben kerestünk.
Length
Osztály: Match
public int Length;
A találat hosszát adja meg.
Value
Osztály: Match
public string Value;
A találatban szereplő szövegrész.
SubMatches
Osztály: Match
public object SubMatches;
A találaton belüli altalálatokat adja vissza. A property típusa SubMatches, melyet típuskényszerítéssel érhetünk el. A SubMatches osztály egy kollekció, melynek működése és felépítése megegyezik a MatchCollection osztályéval.
Keresési minták
Keresési minták definiálásakor megadhatunk egyszerű számokat vagy szavakat, de lehetőségünk van speciális karakterek használatára is. Az alábbi táblázatban ezeket a karaktereket és hatásukat foglaljuk össze.
Minta Hatása
\ A következő karaktert a speciális karakterjelzéssel látja el. Például a „\n” jelentése új sor. Ha a mintában a „\” karaktert akarjuk használni, akkor azt a „\\” formában kell megadnunk. A zárójelek használatához is ez a karakter szükséges: „\(„.
^ A bevitel elejét jelzi.
$ A bevitel végét jelzi.
* Az előtte álló karaktert ismétli, akárhányszor (ez 0 is lehet). Pl.: az „ot*” keresés eredményül adja az „ot” és az „ott” karaktersorozatokat egyaránt.
+ Az előtte álló karaktert ismétli egyszer, vagy többször. Maradva az előző példánál, ha a keresésbe az „ot+” mintát adjuk meg, akkor csak az „ott” szó jöhet számításba, az „ot” nem.
? Az előtte álló karaktert ismétli nullaszor, vagy egyszer.
. Bármilyen hagyományos karaktert helyettesíthet.
(kifejezés) A keresési minták elválasztására szolgál, lásd a következő példa.
x|y Az adott helyen vagy x vagy y szerepelhet. Például az „(e|me)gy” keresés az „egy” és a „megy” szavakat is egyaránt megtalálja.
{n} Az n egy nem negatív szám. Az előtte álló karakter ismétlődését jelenti pontosan n-szer. Pl.: az „ott{2}” keresés csak az „ottt” karaktersorozatot értékeli találatként.
{n,} Az n egy nem negatív szám. Az előtte álló karakter ismétlődését jelenti, legalább n-szer. Pl.: az „ott{2,}” keresés az „ottt” és az „otttt” karaktersorozatokat is egyaránt találatnak értékeli.
{n,m} Az n és m nem negatív számok. A kifejezés az előtte álló karakter ismétlődését jelenti legalább n-szer, de maximum m-szer.
[xyz] Az adott karakterhelyen a halmaz bármelyik karaktere szerepelhet.
[a-z] Az adott karakterhelyen a megadott intervallum bármely tagja szerepelhet.
[^xyz] Az adott karakterhelyen találatként értékel minden karaktert, amely nem szerepel a felsorolásban.
[^m-z] Az adott karakterhelyen találatként értékel minden karaktert, amely nem szerepel a megadott intervallumban.
\b Olyan szórészletek keresésére szolgál, amelyeket szóköz zár le. Pl.: a „gy\b” kifejezés eredményül adja az „egy” szónak a „gy” részét, de nem jelez találatot az „egyetlen” szó esetében.
\B Olyan szórészletek keresésére szolgál, amelyek után nem szóköz szerepel. Az előző példánál maradva, a „gy\B” kifejezés pont az ellentétes eredményt szolgáltatja.
\d Számjegy keresésére szolgál. Ugyanaz, mintha a [0-9] kifejezést használnák.
\D Nem számjegy keresésére szolgál.
\f Lapdobás karakter.
\n Soremelés karakter.
\r Kocsi vissza karakter.
\s Bármilyen szóköz keresésére használható, beleértve a tabulátort is.
\S Nem szóközök keresésére használható.
\t Tabulátor karakter.
\w Bármilyen szavakban szereplő karaktert kereshetünk vele, beleértve az aláhúzás jelt is. Ugyanaz, mint a "[A-Za-z0-9_]" kifejezés.
\W A „\w”-nek az ellenkezője. Ugyanaz, mint a "[^A-Za-z0-9_]" kifejezés.

Regular Expressions cikksorozat

Keresés szabályok alapján - Regular Expressions 1. rész

Keresési szabályok létrehozása - Regular Expressions 2. rész