Da ponovimo:

Regularni izrazi su nizovi specijalnih znakova koji definišu obrazac za prepoznavanje teksta.

Nastavak...

U C# jeziku, za naprednu manipulaciju tekstom koriste se klase iz imenskog prostora System.Text.RegularExpressions.

Ovaj imenski prostor sadrži klase koje omogućavaju pretragu, zamenu i validaciju podataka pomoću obrazaca (patterna) definisanih regularnim izrazima.


Osnovne klase iz imenskog prostora System.Text.RegularExpressions

  Rad sa regularnim izrazima omogućavaju sledeće ključne klase:

  1. Regex: Glavna klasa za rad sa regularnim izrazima. Omogućava pretragu i manipulaciju stringovima pomoću regularnih izraza.
  2. Match: Predstavlja rezultat pojedinačne pretrage u stringu pomoću regexa.
  3. MatchCollection: Sadrži sve rezultate pretrage - kolekcija svih pronađenih podudaranja u datom stringu.
  4. Group: Predstavlja grupisane delove podudaranja. Koristi se za rad sa grupama unutar izraza.
  5. Capture: Predstavlja specifične segmente teksta uhvaćene u pretrazi. (Deo teksta koji je uhvaćen pomoću regularnog izraza.)
  6. RegexOptions: Enum koji definiše dodatne opcije za prilagođavanje rada sa regex-om.

Napomena:

Pre korišćenja bilo koje od ovih klasa, na vrhu treba da se doda: "using System.Text.RegularExpressions" !!!


Klasa Regex

Klasa Regex  je centralna za rad sa regularnim izrazima. Omogućava pronalaženje podudaranja u tekstu, zamenu teksta i validaciju stringova pomoću regularnih izraza.

  • Pre korišćenja klase Regex, na vrhu treba da se doda: "using System.Text.RegularExpressions"
  • Zatim se kreira objekat klase Regex na osnovu zadatog obrasca:
       Regex R = new Regex(pattern);
  • gde je:
    • R - naziv instance klase Regex
    • pattern - šablon koji se koristi za regularni izraz

Najčešće korišćene metode:

  • IsMatch(string input): Proverava da li dati string odgovara zadatom obrascu.
  • Match(string input): Pronalazi prvo pronađeno poklapanje u stringu.
  • Matches(string input): Pronalazi sva pronađena poklapanja u stringu.
  • Replace(string input, string replacement): Zamenjuje poklapanja novim stringom.
  • Split(string input): Deli tekst na osnovu obrasca (koristeći regularni izraz kao separator.).

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string tekst = "Dobrodošli u 2025. godinu!";
        string obrazac = "\\d+"; // Traži brojeve u tekstu

        if (Regex.IsMatch(tekst, obrazac))
        {
            Console.WriteLine("Tekst sadrži brojeve.");
        }

        Match prviBroj = Regex.Match(tekst, obrazac);
        Console.WriteLine("Prvi pronađeni broj: " + prviBroj.Value);
    }
}


Klasa Match

Kada koristimo Regex.Match(), dobijamo objekat klase Match koji sadrži informacije o pronađenom poklapanju, uključujući :

  • Success – vraća true ako je pronađeno poklapanje.
  • Value – vraća pronađeni podstring.
  • Index – vraća poziciju pronađenog poklapanja u stringu.
  • Length: Dužina podudaranja.
  • Groups – vraća dodatne informacije ako su korišćene grupe u regularnim izrazima.


string tekst2 = "Telefon: 123-456-789";
string obrazac2 = "\\d{3}-\\d{3}-\\d{3}";

Match podudaranje = Regex.Match(tekst2, obrazac2);
if (podudaranje.Success)
{
    Console.WriteLine("Pronađen broj telefona: " + podudaranje.Value);
    Console.WriteLine("Pozicija: " + podudaranje.Index);
}


Klasa MatchCollection

Klasa MatchCollection sadrži skup svih pronađenih poklapanja u stringu. Dobija se metodom Regex.Matches().


string tekst3 = "Brojevi: 10, 20, 30.";
string obrazac3 = "\\d+";

MatchCollection podudaranja3 = Regex.Matches(tekst3, obrazac3);
foreach (Match m in podudaranja3)
{
    Console.WriteLine("Pronađen broj: " + m.Value);
}


Klasa RegexOptions

RegexOptions pruža dodatne opcije za prilagođavanje pretrage.

Najčešće korišćene opcije:

  • IgnoreCase: Ignorisanje velikih i malih slova.
  • Multiline: Obrada svake linije u tekstu odvojeno.
  • Compiled: Poboljšanje performansi kompajliranjem regex-a.

string tekst4 = "Dobrodošli\ndobrodošli";
string obrazac4 = "dobrodošli";

MatchCollection podudaranja4 = Regex.Matches(tekst4, obrazac4, RegexOptions.IgnoreCase | RegexOptions.Multiline);
Console.WriteLine("Pronađeno podudaranja: " + podudaranja4.Count);


 

Klasa Group

 

Ako koristimo grupe unutar regularnog izraza, klasa Group omogućava pristup pojedinačnim grupama. - ovo zasad ne radimo

 

Klasa Capture

Klasa Capture omogućava detaljniji rad sa podacima koji su deo poklapanja. - ovo zasad ne radimo


Dodatni primer:

using System;           
using System.Text.RegularExpressions; }

class Program
{
    // regularni izraz za reč od 5 slova
    // prvo slovo je "a" a poslednje slovo je "e"  
static string pattern = "^a...e$"; static void Main() { // kreiranje instance klase Regex i // postavljanje regularnog izraza u argument (pattern)
Regex rg = new Regex(pattern);
// IsMatch() će vratiti true ako se reč "apple" poklapa sa regularnim izrazom
 
if (rg.IsMatch("apple")) { Console.WriteLine("String se poklapa sa zadaim šablonom"); }
        else
        {
            Console.WriteLine("String se ne poklapa sa zadatim šablonom");
        }
    }

U ovom primeru se proverava da li string "apple"odgovara definisanom šablonu regularnog izraza.

Šablon "^a...e$"označava bilo koji niz od pet slova koji počinje sa a i završava sa e. Metoda IsMatch()  vraća true ako se string koji prosleđujemo poklapa sa šablonom regularnog izraza. Ako prosledimo drugi niz: "antilope", on se ne podudara sa šablonom, jer string "antilope" ima više od tri slova između a i e.

 Napomena: Regularne izraze definišemo u obliku stringa, kao na primer: 
       string pattern = "^a...e$";


Dodatne vežbe za učenike

Napisati program u kojem korisnik treba da unese neki tekst, a vi
  •  proveravate da li u tekstu ima brojeva. Ako ima, treba ih ispisati
  • ispisujete sve email aderse iz teksta
  • ispisujete sve dvocifrene brojeve (ako ih ima)
  • .......

Last modified: Thursday, 11 December 2025, 2:42 AM