Regularni izrazi v C#

Regularni izrazi v C#

Avtor: Nastja Bastjančič

Kazalo - stran 1

Uvod - stran 2

Uvod

Razbiranje podatkov iz niza je v splošnem zahteven problem. Prav tako je v splošnem velik problem prepoznavanje nizov, ki ustrezajo določenim pogojem.

V seminarski nalogi vam bom predstavila regularne izraze, s katerimi si pomagamo pri iskanju določenih nizov. Razložila vam bom pomen objektov, ki so izpeljani iz tega razreda in uporabo tega razreda popestrila z zgledi, kjer si bomo ogledali metode razreda in njegove lastnosti.

Kaj so regularni izrazi - stran 3

Kaj so regularni izrazi in zakaj jih uporabljamo?

Regularni izrazi so vzorci, ki jih uporabljamo za iskanje določenih nizov. Iščemo lahko na podlagi določenega nabora znakov ali tudi na podlagi vzorca znakov.

Regularni izrazi nam pridejo še kako prav, ko moramo, na primer, poiskati in izpisati nek spletni naslov ali, na primer, področno kodo in določeno telefonsko številko.

Regularne izraze lahko opišemo kot nize, sestavljene iz zaporedja znakov in t.i. »rezerviranih znakov«, ki predstavljajo vzorce.

Na primer, da v neki tekstovni datoteki želimo poiskati vse e-naslove uporabimo vzorec:
\b[a-z0-9!#$%&'*”+-_/=?]+[a-z0-9!#$%&'*”+-_/=?.]+@[a-z0-9!#$%&'*”+-_/=?.]+\.[a-z.]{2,4}\b

S pomočjo tega vzorca poiščemo kakršenkoli e-naslov.

Primeri posebnih znakov - stran 4

Primeri posebnih znakov

Poglejmo si nekaj posebnih znakov, ki jih uporabljamo v regularnih izrazih:

(tabelaPosebnihZnakov1.PNG)
Tabela posebnih znakov 1

Primeri posebnih znakov - stran 5

(tabelaPosebnihZnakov2.PNG)
Tabela posebnih znakov 2

Primeri posebnih znakov - stran 6

(tabelaPosebnihZnakov3.PNG)
Tabela posebnih znakov 3

Primeri posebnih znakov - stran 7

(tabelaPosebnihZnakov4.PNG)
Tabela posebnih znakov 4

Razredi regularnih izrazov - stran 8

Razredi regularnih izrazov

Knjižnjica System.Text.RegularExpressions vsebuje razrede, ki omogočajo uporabo regularnih izrazov programov C#.

Vsebuje razrede:

ImeOpis razreda
CaptureRazred predstavlja rezultate posebnih znakov.
CaptureCollectionPredstavlja celoten izbor posebnih znakov. Gre za zbirko objektov razreda Capture.
GroupRazred predstavlja skupino zajemanj.
GroupCollectionPredstavlja celoten izbor skupin zajemanj.
MatchRazred predstavlja rezultate ujemanj.
MatchCollectionPredstavlja celoten izbor rezultatov ujemanj. Gre za zbirko objektov razreda Match.
RegexRazred predstavlja regularni izraz.
RegexCompilationInfoPredstavlja informacije, ki jih prevajalnik uporablja pri ustvarjanju oblike regularnega izraza.

Razred Capture vsebuje metode:

  • Equals (Prejme 2 argumenta – objekta in vrne objekt tipa bool – torej true ali false.)
  • ReferenceEquals (Prejme 2 argumenta – objekta in vrne objekt tipa bool – torej true ali false.)

Razred Group vsebuje metode:

  • Equals (Prejme 2 argumenta – objekta in vrne objekt tipa bool – torej true ali false.)
  • ReferenceEquals (Prejme 2 argumenta – objekta in vrne objekt tipa bool – torej true ali false.)
  • Synchronized (Prejme 1 argument – notranjo skupino in vrne objekt tipa Group.)

Razred Match vsebuje metode:

  • Equals (Prejme 2 argumenta – objekta in vrne objekt tipa bool – torej true ali false.)
  • ReferenceEquals (Prejme 2 argumenta – objekta in vrne objekt tipa bool – torej true ali false.)
  • Synchronized (Prejme 1 argument – notranje ujemanje in vrne primer ujemanja.)

Razred Regex pa vsebuje metode:

  • CompileToAssembly (Ne vrača ničesar, metoda le pripravi enega ali več določenih objektov.)
  • Equals (Prejme 2 argumenta – objekta in vrne objekt tipa bool – torej true ali false.)
  • Escape (Prejme niz in vrne niz.)
  • IsMatch (Prejme 2 argumenta – niz in regularni izraz * vzorec. Metoda preveri, če s pomočjo določenega regularnega izraza dobimo ujemanje z podanim nizom.)
  • Match (Prejme 2 argumenta – niz in regularni izraz – vzorec. Metoda vrne prvo pojavitev podniza, ki ustreza pogojem iz vzorca.)
  • Matches (Prejme 2 argumenta – niz in regularni izraz * vzorec. Metoda vrne vse pojavitve podniza, ki ustrezajo pogojem iz vzorca.)
  • Replace (Prejme niz in vrne niz, v katerem so vse besede, ki ustrezajo pogojem iz vzorca, zamenjane.)
  • Split (Prejme niz in regularni izraz in vrne tabelo nizov. Metoda razbije niz glede na znak v vzorcu.)
  • Unescape (Prejme niz in vrne niz. Pretvori vse ubežne znake v podanem nizu.)

Primeri uporabe - stran 9

Primeri uporabe regularnih izrazov

V Microsoft Visual C# ustvarimo nov projekt (New project) in sicer konzolno aplikacijo (Console Application).

Dodamo imenski prostor System.Text.RegularExpressions, ki je namenjen delu z regularnimi izrazi.

(Zaslonska01.JPG)
Slika 1

Napišemo metodo MojePoizvedovanje, ki dobi za parametra niz in regularni izraz. Metoda poleg besed, ki ustrezajo določenemu vzorcu, izpiše tudi kateri regularni izraz je uporabila pri poizvedbi. Besede izpiše vsako v svojo vrstico.

(Zaslonska02.JPG)
Slika 2

Primeri uporabe - stran 10

Uporaba metode – konkretni zgledi

Metodo lahko uporabimo na naslednjih primerih: Uporabo metod izvajamo v metodi Main.

  • Recimo, da bi iz podanega niza želeli izpis tistih besed, ki se začnejo na črko »k«.
(Zaslonska03.JPG)
Slika 3

\b pomeni ujemanje belega znaka s črko »k« (torej začetek besede).

\S pomeni, da črki »k« sledi katerikoli znak.

* pa pomeni, da se prejšnji znak lahko ne ponovi ali pa se lahko ponovi večkrat.

Dobimo:

(Zaslonska04.JPG)
Slika 4

Primeri uporabe - stran 11

  • Recimo, da bi iz podanega niza želeli izpis tistih besed, ki se začnejo s črko »k« ali pa s črko »K«, zapišemo v oglate oklepaje obe črki (veliko in malo tiskano) in sicer brez kakršnegakoli belega znaka ali kakršnegakoli ločila.
(Zaslonska05.JPG)
Slika 5

\b pomeni ujemanje belega znaka s črko »k« ali s črko »K« (črki sta navedeni v oglatih oklepajih).

\S pomeni, da črki »k« ali »K« sledi katerikoli znak, ki ni eden izmed belih znakov.

* pa pomeni, da se prejšnji znak lahko ne ponovi ali pa se lahko ponovi večkrat.

Dobimo:

(Zaslonska06.JPG)
Slika 6

Primeri uporabe - stran 12

  • Recimo, da bi iz podanega niza želeli izpis tistih besed, ki se začnejo s črko »k« ali s »K« in končajo s črko »a«.
(Zaslonska07.JPG)
Slika 7

\b pomeni ujemanje belega znaka s črko »k« ali »K« (črki sta navedeni v oglatih oklepajih).

\S pomeni, da črki »k« ali »K« sledi katerikoli znak, ki ni eden izmed belih znakov. * pomeni, da se prejšnji znak lahko ne ponovi ali pa se lahko ponovi večkrat.

Sledi črka »a« in \b za njo pomeni ujemanje črke »a« in belega znaka (torej konec besede).

Dobimo:

(Zaslonska08.JPG)
Slika 8

Primeri uporabe - stran 13

  • Želimo izpis besed, ki vsebujejo črko »č«.
(Zaslonska09.JPG)
Slika 9

\S pomeni, da je pred črko »č« katerikoli znak, ki ni eden izmed belih znakov * pomeni, da je teh znakov lahko ali nič ali več.

+ za črko »č« pomeni, da se za črka lahko ponovi enkrat ali večkrat

in nato sledi še katerikoli znak, ki ni eden izmed belih znakov - ta beli znak se lahko ne pojavi, ali pa se pojavi večkrat.

Dobimo:

(Zaslonska10.JPG)
Slika 10

Primeri uporabe - stran 14

  • Želimo izpis besed, ki vsebujejo ali podniz »či« ali podniz »ak«.
(Zaslonska11.JPG)
Slika 11

\S pomeni, da je pred črko »č« katerikoli znak, ki ni eden izmed belih znakov.

* pomeni, da je teh znakov lahko ali nič ali več.

Nato sta v navadnih oklepajih navedena podniza, katera želimo, da se ponovita, ločena z navpično črto

in nato je še znak, ki pomeni, da se za določenim podnizom lahko pojavi kakšen znak, ki ni eden izmed belih znakov ali pa se beseda tam konča.

Dobimo:

(Zaslonska12.JPG)
Slika 12

Filmček - stran 15

Filmček

Viri - stran 16

Viri

Literatura

Price J., Gunderloy M.: Visual C# . NET, ZDA, 2002

Internetni viri

http://www.regular-expressions.info/

http://en.wikipedia.org/wiki/Email_address

Izjava - stran 17

Izjava

Izjavljam, da sem nalogo opravila samostojno in da sem njena avtorica. Zavedam se, da v primeru, če izjava prvega stavka ni resnična, kršim disciplinska pravila Fakultete za matematiko in fiziko.

0%
0%