Wyrażenia regularne w programowaniu

03/06/2019

3 minut czytania

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.

 

KwantyfikatorZnaczeniePrzykład
+co najmniej jedno wystąpieniee*j -> ej, eej,
*zero lub więcej wystąpieńe+j -> ej, e, j, eej,
?zero lub jedno wystąpieniee?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żenieOpis
[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żenieOpis
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

Powiązane posty

Kompletny poradnik dla developera: jak znaleźć pracę zdalną?
Szukasz pracy zdalnej dla programistów? Zebraliśmy...
Powstaje europejski potentat w branży szkoleń IT. SDA i Codecool łączą siły
Otwieramy nowy, ekscytujący rozdział naszej firmy...
Nauka programowania od zera
Programiści jako jedna z nielicznych grup...

Kontynuując korzystanie z naszej witryny, wyrażasz zgodę na używanie przez nas plików cookie i podobnych technologii zgodnie z naszą Polityką dotyczącą plików cookie. W dowolnym momencie może zmienić swoje preferencje w ustawieniach przeglądarki lub usunąć pliki cookies.