MC, 2025
Ilustracja do artykułu: Magia C# Regex: Jak wykorzystać wyrażenia regularne w C#

Magia C# Regex: Jak wykorzystać wyrażenia regularne w C#

W programowaniu często napotykamy sytuacje, w których potrzebujemy dopasować dane, sprawdzić ich format lub przeprowadzić różnego rodzaju manipulacje na ciągach tekstowych. W takich przypadkach nieocenionym narzędziem okazuje się być wyrażenie regularne, znane jako regex. W tym artykule pokażemy, jak wykorzystać potęgę wyrażeń regularnych w C# (C Sharp) i jak za ich pomocą rozwiązywać różnorodne problemy związane z tekstem.

Co to jest Regex?

Wyrażenie regularne (regex) to specjalny ciąg znaków, który stanowi wzorzec do dopasowywania, wyszukiwania i manipulacji tekstem. Regex jest niezwykle potężnym narzędziem, które pozwala na skomplikowane operacje na tekstach w sposób szybki i wydajny. Regex jest używany w wielu językach programowania, a w C# wykorzystywane jest w klasach takich jak Regex, które znajdują się w przestrzeni nazw System.Text.RegularExpressions.

Za pomocą wyrażeń regularnych możemy np.:

  • Dopasować konkretny ciąg znaków w większym tekście
  • Walidować formaty danych (np. email, numery telefonów)
  • Wyszukiwać, zamieniać lub usuwać części tekstu
  • Oczyścić tekst z niechcianych znaków

Jak używać C# Regex?

Aby zacząć korzystać z regex w C#, musisz zainstalować odpowiednią przestrzeń nazw, która zawiera klasy umożliwiające pracę z wyrażeniami regularnymi. Oto jak możesz zacząć:

using System.Text.RegularExpressions;

Klasa Regex posiada różne metody, które umożliwiają pracę z wyrażeniami regularnymi. Do najczęściej używanych metod należą:

  • Regex.IsMatch() - sprawdza, czy dane wyrażenie regularne pasuje do tekstu
  • Regex.Match() - znajduje pierwsze dopasowanie i zwraca je
  • Regex.Matches() - znajduje wszystkie dopasowania w tekście
  • Regex.Replace() - zamienia dopasowania w tekście na inny ciąg znaków
  • Regex.Split() - dzieli tekst na części według wyrażenia regularnego

Przykłady użycia C# Regex

Przykład 1: Sprawdzanie, czy tekst jest poprawnym adresem e-mail

Jednym z najczęstszych zastosowań regex w programowaniu jest walidacja danych. Sprawdzenie, czy dany ciąg znaków jest poprawnym adresem e-mail, jest łatwe do zrealizowania dzięki wyrażeniu regularnemu. Oto jak można to zrobić w C#:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string email = "example@example.com";
        string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$";
        
        bool isValidEmail = Regex.IsMatch(email, pattern);
        
        Console.WriteLine($"Email {email} jest {(isValidEmail ? "poprawny" : "niepoprawny")}");
    }
}

W tym przykładzie używamy wyrażenia regularnego, które pasuje do standardowego formatu adresu e-mail. Funkcja Regex.IsMatch() zwraca true, jeśli tekst jest zgodny z wyrażeniem, a false w przeciwnym przypadku.

Przykład 2: Wyszukiwanie i zamiana tekstu

Często zdarza się, że chcemy znaleźć i zamienić fragmenty tekstu zgodne z określonym wzorcem. Regex jest idealnym rozwiązaniem do takich zadań. Załóżmy, że mamy ciąg tekstowy i chcemy zamienić wszystkie wystąpienia słowa "apple" na "orange". Można to zrobić za pomocą metody Regex.Replace():

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "I like apple. Apple is my favorite fruit.";
        string pattern = @"apple"; // Dopasowanie dokładnego słowa "apple"
        
        string replacedText = Regex.Replace(text, pattern, "orange", RegexOptions.IgnoreCase);
        
        Console.WriteLine(replacedText);
    }
}

W tym przypadku używamy wyrażenia regularnego apple, które zapewnia, że dopasujemy tylko całe słowo "apple" (nie części innych słów). Użycie flagi RegexOptions.IgnoreCase pozwala na ignorowanie wielkości liter, co oznacza, że "apple" i "Apple" zostaną zamienione na "orange".

Przykład 3: Podział tekstu na części

Innym użytecznym zastosowaniem wyrażeń regularnych jest dzielenie tekstu na mniejsze fragmenty. Na przykład, jeśli mamy tekst z danymi oddzielonymi przecinkami, możemy podzielić go na części za pomocą Regex.Split():

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "John,Doe,30,Engineer";
        string pattern = @",";
        
        string[] parts = Regex.Split(text, pattern);
        
        foreach (string part in parts)
        {
            Console.WriteLine(part);
        }
    }
}

W tym przykładzie używamy wyrażenia regularnego ,, aby rozdzielić ciąg tekstowy na części według przecinków. Wynikiem będzie tablica, w której każda komórka zawiera jedną z części tekstu: "John", "Doe", "30" i "Engineer".

Najczęściej używane składniki wyrażeń regularnych w C#

Oto kilka kluczowych składników, które warto znać, pisząc wyrażenia regularne w C#:

  • d - dopasowuje dowolną cyfrę (0-9)
  • w - dopasowuje dowolny znak alfanumeryczny (litery i cyfry)
  • s - dopasowuje dowolny biały znak (spacja, tabulator, itp.)
  •  - granica słowa (dopasowuje początek lub koniec słowa)
  • ^ - początek ciągu
  • $ - koniec ciągu
  • . - dowolny pojedynczy znak
  • [] - zbiór znaków (np. [a-z] dopasowuje małe litery)
  • + - jedno lub więcej wystąpień poprzedniego elementu
  • ? - 0 lub 1 wystąpienie poprzedniego elementu

Podsumowanie

Wyrażenia regularne w C# to potężne narzędzie, które umożliwia manipulację tekstem w sposób szybki i efektywny. Dzięki regex możemy łatwo dopasowywać, wyszukiwać, zamieniać, a nawet dzielić teksty w oparciu o skomplikowane wzorce. C# oferuje łatwą integrację z regex dzięki bibliotece System.Text.RegularExpressions oraz klasie Regex. Zrozumienie podstaw regex oraz zapoznanie się z przykładami pozwala na szybkie wdrożenie tego narzędzia w swoich projektach i rozwiązywanie różnorodnych problemów związanych z tekstem.

Jeśli chcesz nauczyć się więcej o regex w C#, wypróbuj nasze przykłady i zacznij pisać własne wyrażenia regularne, które pomogą Ci w codziennym programowaniu!

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

Imię:
Treść: