Paweł Łukasiewicz
2015-03-25
Paweł Łukasiewicz
2015-03-25
Udostępnij Udostępnij Kontakt
Wyrażenie regularne to wzór, który może być porównany z tekstem wejściowym. Platforma .NET dostarcza narzędzia, które są w stanie dokonać takich dopasowań. Wzór składa się z jednego lub większej ilości znaków, operatorów czy całych konstrukcji.

Klasa Regex

Klasa Regex jest używana do reprezentowania wyrażeń regularnych. Poniżej lista powszechnie używanych metod z tej klasy:
Metoda Znaczenie
public bool IsMatch(string input) sprawdza czy wyrażenie regularne określone w konstruktorze klasy Regex znajdzie dopasowanie w określonym ciągu wejściowym
public bool IsMatch(string input, int startat) sprawdza czy wyrażenie regularne określone w konstruktorze klasy Regex znajdzie dopasowanie w określonym ciągu wejściowym począwszy od określonej pozycji
public static bool IsMatch(string input, string pattern) sprawdza czy określone wyrażenie regularne znajdzie dopasowanie w podanym ciągu wejściowym
public MatchCollection Matches(string input) przeszukuje określony ciąg wejściowy w celu znalezienia wszystkich wystąpień wyrażenia regularnego
public string Replace(string input, string replacement) zastępuje wszystkie wystąpienia wzorca określonym ciągiem zastępcznym
public string[] Split(string input) dzieli ciąg wejściowy na tablicę podciągów na pozycjach określonych wzorem wyrażenia regularnego
W celu uzyskania kompletnej listy właściowości i metod klasy Regex proszę skorzystać z oficjalnej dokumentacji Microsoft.
Przykłady zastosowania powyższych metod:
using System;
using System.Text.RegularExpressions;
namespace WyrazeniaRegularne
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "Jedno przykładowe zdanie potrzebne do testu";
            Console.WriteLine("Słowa zaczynające się od 'p': ");
            PokazDopasowania(str,  @"\bp\S*");
            Console.WriteLine();
            Console.WriteLine("Następny przykład: ");
            Console.WriteLine();
            str = "kolorowa krowa kłuje kijem krzywą kozę";
            Console.WriteLine("Słowa zaczynające się od 'k' a kończące na 'a': ");
            PokazDopasowania(str,  @"\bk\S*a\b");
            Console.WriteLine();
            Console.WriteLine("Następny przykład: ");
            Console.WriteLine();
            str = "Witaj   Drogi          Użytkowniku!";
            // Wyjaśnienie poniższego zapisu \\s+
            // \s - poszukiwanie białych znaków
            // + - więcej niż jeden znak - dlatego po zamianie mamy odstęp między wyrazami
            string wzor = "\\s+";
            string zamiana = " ";
            Regex rgx = new Regex(wzor);
            string wynik = rgx.Replace(str, zamiana);
            Console.WriteLine("Oryginał: {0}", str);
            Console.WriteLine("Po zmianie: {0}", wynik);
            Console.ReadKey();
            // Wynik działania programu
            //Slowa zaczynajace sie od 'p':
            //Wyrazenie: \bp\S*
            //przykladowe
            //potrzebne
            //Nastepny przyklad:
            //Slowa zaczynajace sie od 'k' a konczace na 'a':
            //Wyrazenie: \bk\S*a\b
            //kolorowa
            //krowa
            //Nastepny przyklad:
            //Oryginal: Witaj   Drogi          Uzytkowniku!
            //Po zmianie: Witaj Drogi Uzytkowniku!
        }
        static void PokazDopasowania(string text, string wyrazenie)
        {
            Console.WriteLine("Wyrażenie: {0}", wyrazenie);
            MatchCollection mc = Regex.Matches(text, wyrazenie);
            foreach (Match d in mc)
            {
                Console.WriteLine(d);
            }
        }
    }
}