Co to jest wyrażenie regularne?
Wyrażenie regularne lub wyrażenia regularne, to znaczniki dopasowujące wzorce, które programiści służy do wyszukiwania określonych wzorców w tekście. Wyrażenia regularne mogą wyszukiwać prawie wszystko, w zależności od ich struktury; są używane wszędzie przez programistów, ponieważ są nieocenione w pomaganiu komputerom w szybkim sortowaniu danych i filtrowaniu bzdur, które w przeciwnym razie mogłyby spowodować błędy.
Wyrażenia regularne wyglądają przerażająco, szczególnie dla nie-programistów. Spójrz tylko na to:
[a-zA-Z0-9_.+-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9_.-]+
Realistycznie rzecz biorąc, nie jest tak źle; ten pasuje do adresów e-mail. Jak zobaczysz, wyrażenia mogą być podzielone na pojedyncze znaki, z których wszystkie mówią programowi, czego szukać.
Wyrażenia regularne są prawie uniwersalne. Ten sam generał składnia dotyczy wszystkich języków z niewielkimi różnicami tu i tam. Ten przewodnik zawiera przykłady zarówno z Pythona, jak i JavaScript, a także zwykłego starego wyrażenia regularnego. Jeśli pracujesz w innym języku, nie martw się. Prawie wszystko będzie dotyczyć również wybranego przez Ciebie języka.
Podstawy wyrażenia regularnego
Technicznie rzecz biorąc, nie ma wielu rzeczy, których nie można uznać za wyrażenia regularne, ponieważ dosłowne ciągi tekstu są naprawdę proste. Jeśli miałbyś użyć 'abcde' jako wyrażenia regularnego, język programowania szukałby dokładnie tego ciągu.
Pierwszą bardziej dynamiczną postacią dopasowywania, na którą należy się przyjrzeć, jest „.” postać. W tym kontekście kropka jest symbolem wieloznacznym. Jeśli szukasz z nim, twój program zwróci każdy znak, który znajdzie jako dopasowanie.
A co, jeśli chcesz poszukać dosłownej kropki? To też nie jest trudne. Jeśli chcesz użyć kropki, dodaj przed nią ukośnik odwrotny, na przykład: '\.'
Znaki ukośnika odwrotnego
Jednak ukośnik odwrotny odgrywa tu znacznie więcej ról. Większość głównych znaków regex zawiera ukośnik odwrotny.

Spójrz na kilka przykładów:
- \d: Cyfry od 0 do 9
- \w: "Znaki słów" litery, cyfry i podkreślenie
- \s: Białe znaki, w tym tabulatory, znaki nowej linii i zwykłe spacje
Jeśli zamiast tego użyjesz wielkiej litery z którymkolwiek z nich, otrzymasz odwrotną stronę. Na przykład „\D” daje wszystko oprócz cyfr.
Klasy
znaki ukośnika odwrotnego są dobre, ale nadal są dość sztywne. Ogólnie rzecz biorąc, będziesz chciał dopasować litery, cyfry lub kilka znaków specjalnych.

Umieść znaki, które chcesz dopasować w parze nawiasów kwadratowych „[]”, a Twój program dopasuje się do każdego z nich. Nazywa się to klasą regex.
[abcd1234]
Powyższy przykład jest nadal nieefektywny. Zamiast tego możesz użyć myślnika, aby określić zakres; na przykład wszystkie małe litery:
[a-z]
Możesz też wymienić zakresy. Poniższe wyrażenie pasuje do wszystkich liter i cyfr:
[a-zA-Z0-9]
Jeśli zamierzasz uwzględnić myślnik w swoim zestawie znaków, dodaj go na końcu, aby zapobiec ocenie. Działa również z innymi znakami specjalnymi.
[a-zA-Z0-9_.+-]
Podobnie jak w przypadku znaków odwrotnego ukośnika, tutaj również możesz uzyskać wynik odwrotny. Umieść „^” na początku zajęć, aby wykluczyć ich z wyników. Spowoduje to wykluczenie cyfr i kilku znaków specjalnych z wyników:
[^0-9_+.-]
Grupy
Grupy używają zestawu nawiasów, aby oddzielić Twoje wyrażenie. Grupują dane, pozwalając programowi na ich celowanie i używanie. Gdy program usuwa znak ' http://' z adresu internetowego używa do tego grup wyrażeń regularnych. Wyrażenie regularne pozwala mu kierować się pewnymi kryteriami, a grupy pozwalają mu oddzielić sekcje.

Grupy pozwalają również wybierać między jednym a drugim wzorem. Używają pojedynczego „|” działać jako „lub” w wyrażeniu. Poniższe wyrażenie będzie pasować do dowolnego z tych: .com, .org, .net, .edu lub .gov.
\.(com|org|net|edu|gov)
Kwantyfikatory
Kwantyfikatory są dokładnie tym, jak brzmią. Mówią ekspresji ilość postaci, której szukasz. Oto dostępne kwantyfikatory:
- *: Zero lub więcej
- +: Jeden lub więcej
- ?: Zero czy jeden
- {3}: kwota w nawiasach
Umieść dowolny z tych kwantyfikatorów na końcu znaku lub klasy, której ilość chcesz określić. Ten przykład szuka standardowych siedmiocyfrowych numerów telefonów:
\d{3}[.*-]\d{3}[.*-]\d{4}
Kotwice i granice
Wyrażenia regularne umożliwiają wyszukiwanie wzorców na podstawie ich pozycji w ciągu tekstu lub wokół słowa.

Oto Twoje podstawowe opcje:
- ^: Początek struny
- $: koniec ciągu
- \b: Granica słowa (początek lub koniec słowa)
Jeśli chcesz znaleźć tylko ciągi zaczynające się na literę, możesz spróbować:
^[a-zA-Z]
Powiedzmy, że chcesz znaleźć tylko słowo „to”, a nie słowa zawierające litery I i T; tam używałbyś granic słów.
\b (i| I)t\b
Końcowe przemyślenia
Wyrażenia regularne mogą zaoszczędzić mnóstwo bólu głowy podczas programowania. Wyobraź sobie, że próbujesz napisać logikę, aby wykonać dowolny z przykładów w tym artykule. Byłby straszny bałagan. Kiedy już poczujesz się z nimi komfortowo, prawdopodobnie naprawdę będziesz cieszyć się mocą i elastycznością wyrażenia regularnego.