MC, 2025
Ilustracja do artykułu: Odkryj Moc C# Regex: Przykłady, Triki i Zastosowania

Odkryj Moc C# Regex: Przykłady, Triki i Zastosowania

Jeśli kiedykolwiek miałeś do czynienia z analizą tekstu lub walidacją danych, z pewnością natknąłeś się na pojęcie wyrażeń regularnych, czyli *regex*. W tym artykule przyjrzymy się, czym jest C# Regex, jak go używać i w jaki sposób może Ci pomóc w codziennej pracy programistycznej. Zaczniemy od podstaw, a potem przejdziemy do bardziej zaawansowanych przykładów, które pomogą Ci opanować tę potężną technologię. Gotowy na przygodę? Zaczynamy!

Czym są wyrażenia regularne (Regex)?

Wyrażenia regularne (Regex) to narzędzie służące do dopasowywania, wyszukiwania i manipulowania tekstem na podstawie określonego wzorca. Dzięki wyrażeniom regularnym, możemy szybko znaleźć tekst, który pasuje do określonego formatu, np. numery telefonów, adresy e-mail, daty, a nawet bardziej skomplikowane wzorce. Regex pozwala na realizację zadań, które w tradycyjny sposób wymagałyby znacznie więcej kodu.

W języku C# obsługą wyrażeń regularnych zajmuje się przestrzeń nazw System.Text.RegularExpressions, która udostępnia klasę Regex. To za jej pomocą tworzymy, dopasowujemy i przetwarzamy wyrażenia regularne w naszym kodzie. Regex w C# jest bardzo potężnym narzędziem, które możemy wykorzystać do różnych celów: od walidacji danych po parsowanie złożonych tekstów.

Podstawowa składnia C# Regex

Zanim przejdziemy do przykładów, warto zapoznać się z podstawową składnią wyrażeń regularnych w C#. Wyrażenie regularne składa się z różnych symboli i metaznaków, które służą do definiowania wzorców. Oto kilka podstawowych składników:

  • Dot (.) – reprezentuje dowolny pojedynczy znak.
  • Gwiazda (*) – oznacza, że poprzedni element może wystąpić zero lub więcej razy.
  • Plus (+) – oznacza, że poprzedni element występuje co najmniej raz.
  • Znaki kwadratowe ([]) – określają zestaw dozwolonych znaków (np. [a-z] oznacza wszystkie małe litery).
  • Para nawiasów () – grupują wyrażenia, umożliwiając ich odniesienie później.
  • Slash () – służy do ucieczki specjalnych znaków, np. d oznacza cyfrę.

Jak używać Regex w C#?

W C# Regex wykorzystujemy przy pomocy klasy Regex z przestrzeni nazw System.Text.RegularExpressions. Poniżej przedstawiamy kilka przykładów zastosowania Regex w praktyce.

Przykład 1: Walidacja adresu e-mail

Walidacja adresów e-mail to jedno z najczęstszych zastosowań wyrażeń regularnych. Wyrażenie regularne, które sprawdzi poprawność formatu e-maila, może wyglądać następująco:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string email = "test@example.com";
        string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$";

        bool isValid = Regex.IsMatch(email, pattern);
        Console.WriteLine($"Czy adres e-mail jest poprawny? {isValid}");
    }
}

W tym przykładzie wyrażenie regularne sprawdza, czy ciąg tekstowy spełnia typowy format adresu e-mail. Oczywiście jest to uproszczony wzór, ale idealnie sprawdza się w podstawowych przypadkach.

Przykład 2: Wyszukiwanie wszystkich liczb w tekście

Załóżmy, że chcemy wyciągnąć wszystkie liczby z tekstu. Regex świetnie nadaje się do takich zadań. Oto jak można to zrobić:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "Liczby to: 23, 45, 100, 2025!";
        string pattern = @"d+";  // d oznacza cyfrę, a + - jedno lub więcej wystąpień

        MatchCollection matches = Regex.Matches(text, pattern);
        
        foreach (Match match in matches)
        {
            Console.WriteLine($"Znaleziono liczbę: {match.Value}");
        }
    }
}

Wyrażenie regularne d+ oznacza "jedną lub więcej cyfr". Program wyciągnie wszystkie liczby, które pojawiają się w tekście.

Przykład 3: Zamiana dat w formacie DD/MM/YYYY na YYYY-MM-DD

Czasami musimy zmienić format daty w tekście. Regex może pomóc w tej operacji. Poniżej znajduje się przykład, jak zamienić daty zapisane w formacie "DD/MM/YYYY" na format "YYYY-MM-DD".

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "Dzisiaj jest 15/04/2025, a jutro będzie 16/04/2025.";
        string pattern = @"(d{2})/(d{2})/(d{4})";
        string replacement = @"$3-$2-$1";  // Zamiana kolejności grup

        string result = Regex.Replace(text, pattern, replacement);
        Console.WriteLine(result);
    }
}

W tym przykładzie używamy wyrażenia regularnego (d{2})/(d{2})/(d{4}), aby dopasować datę w formacie "DD/MM/YYYY", a następnie zamieniamy jej kolejność na "YYYY-MM-DD". Dzięki temu możemy łatwo przeformatować daty w tekście.

Przykład 4: Usuwanie zbędnych spacji z tekstu

Czasem tekst może zawierać zbędne spacje, np. na początku, na końcu lub pomiędzy słowami. Regex pozwala na szybkie usunięcie tych nadmiarowych spacji:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "  To    jest   tekst z  nadmiarowymi    spacjami.  ";
        string pattern = @"s+";
        string replacement = " ";

        string result = Regex.Replace(text, pattern, replacement).Trim();
        Console.WriteLine(result);
    }
}

Wyrażenie regularne s+ dopasowuje wszystkie wystąpienia spacji (oraz innych białych znaków, takich jak tabulatory), a następnie je zamienia na pojedynczą spację. Na końcu, dzięki metodzie Trim(), usuwamy spacje na początku i końcu tekstu.

Zaawansowane Zastosowania Regex w C#

Chociaż wyrażenia regularne mogą wydawać się skomplikowane, z czasem stają się bardzo przydatnym narzędziem. Dzięki nim możemy nie tylko walidować dane, ale także analizować teksty, rozbijać je na fragmenty, a nawet przeprowadzać zaawansowane operacje na danych wejściowych.

Podsumowanie

C# Regex to niezwykle potężne narzędzie w rękach programisty. Pomaga w codziennej pracy, od walidacji danych, przez manipulowanie tekstem, aż po bardziej zaawansowane operacje. Warto nauczyć się używać wyrażeń regularnych, ponieważ są one niezwykle efektywne i oszczędzają czas, który normalnie poświęcilibyśmy na pisanie rozbudowanego kodu.

Mamy nadzieję, że ten artykuł dostarczył Ci solidnych podstaw do pracy z C# Regex. Pamiętaj, że z czasem opanowanie wyrażeń regularnych stanie się dla Ciebie naturalną częścią programowania!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: