Regexy, legendarne potwory syntaxu




Na pewno o nich słyszałeś, być może nawet ich używasz, a najdzielniejsi szczycą się tym, że są w stanie je przeczytać i zrozumieć. RegExy (Regular Expression, wyrażenia regularne) to wzory stringów, które mogą być bardzo przydatne, ale też potrafią nieźle zaciemnić kod.


Podstawy RegExów

Jak to działa? Szybka powtórka podstaw.

RegExy mogą służyć do dopasowywania całych ciągów, na przykład "\w" dopasowuje słowo, a "\d" - liczbę.

Mogą również działać na zbiorach znaków, zapisywanych jak "[abc]" (znak a, b lub c), jako zakres "[a-c]" bądź służyć do wykluczania niektórych elementów alfanumerycznych ("[^a-c]").

Dodatkowo mamy kwantyfikatory, czyli operatory które określają warunki dopasowania stringu do RegExa.

Różnice w silnikach RegEx

Generalnie wyrażenia regularne są czytane od lewej do prawej, ale niestety nie są w pełni cross-platformowe ;). macOS nie wspiera na przykład umieszczania tabulatora (zapisywanego jako "\t") w RegExie, chociaż można go tam umieścić z użyciem kopiuj-wklej...

Pełna lista różnic między silnikami znajduje się tutaj.

Kiedy używać RegExów?

Najpopularniejsze zastosowanie RegExów to walidacja formularzy bądź innych danych, pochodzących od użytkownika.

Natomiast jest też lista zastosowań, do które RegExy się zwyczajnie nie nadają... chociaż w wyniku złych praktyk często są zmuszane do wykonywania niewdzięcznej pracy!

Nie służą zatem do parsowania HTML bądź innego kodu, parsowania URL lub obsługi adresów e-mail. Po prostu RegExy zostały stworzone raczej z myślą o języku naturalnym, a nie takich bardziej skomplikowanych formatach.


Jeżeli używasz w swoim kodzie RegExów, bądź masz z nimi inne doświadczenia, koniecznie podziel się nimi w komentarzach!

Komentarze