Wyrażenia regularne pozwalają na efektywną pracę z konkretnym formatem znaków. Dzięki nim łatwo zaprogramować zasady wpisywania kodu pocztowego czy adresu e-mail. Ich działanie opiera się na kwantyfikatorach, grupach i zakresach.
RegEx swoje początki wzięło w Perl. Dziś wyrażenia regularne są obecne niemal w każdym języku programowania.

Czym są wyrażenia regularne?
Czym są wyrażenia regularne? Wyrażenia regularne to opis ciągu znaków, który stanowi swego rodzaju wzorzec. Składają się one z sekwencji atomów, a najprostszy nazywany jest literałem. Może nim być cyfra, litera lub jakikolwiek znak specjalny. Literały można pogrupować w nawiasach. W wyrażeniach regularnych istotne są jeszcze kwantyfikatory, które determinują liczbę wystąpień danego atomu oraz operator alternatywy.
Proste wyrażenia regularne
Najprostszym wyrażeniem regularnym jest ciąg znaków, np. efghj. Jeśli tekst, czyli nasz ciąg znaków, spełnia wyrażenie regularne to otrzymamy prawdę. Jakakolwiek manipulacja lub zmiana, dodanie, odjęcie literki w teście nie spełni dopasowania wyrażenia regularnego.
Kwantyfikatory
Dodając kwantyfikator do pierwszej litery, możemy otrzymać następujące wyrażenie regularne: e+fghj. Dopasowanie w tym przypadku spełniać będą zarówno proste wyrażenia takie, jak efghj, jak i eefghj. Niezależnie od ilości zapisanych literek “e” na początku otrzymamy prawdę.
Korzystając z kwantyfikatorów, należy pamiętać, że dotyczą one wyłącznie atomu po lewej stronie – jeśli obok atomu stałaby spacja, to kwantyfikator dotyczyłby właśnie niej.
Kwantyfikator | Znaczenie | Przykład |
+ | co najmniej jedno wystąpienie | e*j -> ej, eej, |
* | zero lub więcej wystąpień | e+j -> ej, e, j, eej, |
? | zero lub jedno wystąpienie | e?j -> ej, j |
{n,m} | minimum n i maksymalnie m wystąpień | e{2,5}j -> eej, eeej, eeeeej |
{n,} | minimum n wystąpień | e{6,} -> eeeeeej |
{,n} | maksimum n wystąpień | e{,6} -> j, ej, eeej |
{n} | n wystąpień | e{6} -> eeeeeej |
Zakresy w wyrażeniach regularnych
Pisząc wyrażenia regularne, warto skorzystać z zakresów. Pozwalają one określić liczbę znaków w danym miejscu. Zakresy zapisujemy z użyciem nawiasów kwadratowych, w których po kolei wymieniamy wszystkie dopuszczalna znaki lub wprowadzamy przedział, do którego definicji przyda się myślnik.
Wyrażenie | Opis |
[efghj] | jedna z liter |
[e-jE-J] | jedna z liter od e do J, duża lub mała |
Grupy w wyrażeniach regularnych
Dzięki grupom w wyrażeniach regularnych można łączyć skomplikowane struktury. Do zapisywania grup wykorzystujemy nawiasy.
Wyrażenie | Opis |
e(fghj)* | litera e lub ciąg podany w nawiasie zero lub więcej razy |
Przykłady wyrażeń regularnych
Wyrażenia regularne mogą posłużyć do zapisu informacji w konkretnym formacie. Na przykład kod pocztowy składa się z sześciu cyfr. W prawidłowej kolejności występują one w formacie: dwie cyfry, myślnik, trzy cyfry. Jest to jednak informacja niezrozumiała dla komputera, dlatego należy ją zapisać z wykorzystaniem wyrażenia regularnego, np.:
\d\d-\d\d\d – zapis ten jest dość prosty, zamiast litery “d” należy wstawić jedną z cyfr
lub
[0-9]{2}-[0-9]{3} – w tym przypadku wykorzystaliśmy kwantyfikatory oraz zakresy. Nawias kwadratowy mówi o cyfrze występującej w przedziale od 0 do 9, natomiast klamra decyduje o liczbie wystąpień danego atomu.
Jak wykorzystać regex w codziennej pracy?
Wyrażenia regularne w codziennej pracy pomagają między innymi w:
- walidacji danych formularzy,
- sprawdzania tekstu ze wzorcem – poprawności wpisania tekstu w danym formacie,
- odnajdowania wzorca w tekście – listowania zawartości danej strony konkretnych wzorców, np. adresów e-mail, kodów pocztowych czy numerów telefonów,
- pocięcia tekstu na fragmenty – wyciąga określone w zadania fragmenty wzorców,
- zamianie tekstu – szybka i efektywna zmiana formatowania ciągu znaków na inny.
Języki programowania, w których wykorzystywane są wyrażenia regularne
Niemalże w każdym języku programowania występują wyrażenia regularne. Znajdują się one pod nazwami RegEx lub RegExp. W zależności od stosowanego języka wyrażenia regularne mogą się różnić od siebie składnią oraz możliwościami. Wspólne korzenie RegEx odnajduje w języku Perl, skąd większość rozwiązań została skopiowana. Gdzie szukać wyrażeń regularnych w językach programowania?
- Perl – wyrażenia regularne są wbudowane,
- PHP – w celu interpretacji RegEx wykorzystywana jest biblioteka PCRE,
- C – podobnie jak w przypadku powyżej, należy skorzystać z biblioteki PCRE,
- C++ – wyrażenia regularne dostępne w bibliotekach: PCRE, RegEx Boost,
- Java – wyrażenia regularne są wbudowane,
- JavaScript – należy skorzystać z biblioteki xRegEx,
- .NET – wyrażenia regularne są wbudowane.
- Zobacz także: Popularne języki programowania