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!