WikiPlus

Nauka regex od podstaw — interaktywny kurs wyrażeń regularnych

Wyrażenia regularne są znane ze stromej krzywej uczenia — wiele osób jest zniechęconych na widok wzorców jak `^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}`. Ale nie musi tak być! Regex, jak każdy język, uczy się krok po kroku. W tym artykule przeprowadzimy Cię od absolutnych podstaw do średniozaawansowanych wzorców, z ćwiczeniami które możesz przetestować bezpośrednio w narzędziu Tester Regex na WikiPlus. Po przeczytaniu będziesz gotowy pisać i rozumieć regex dla codziennych zadań.

Poziom 1: Literały i podstawowe klasy znaków

Zacznijmy od absolutnych podstaw. Wyrażenie regularne może być po prostu literałem — wzorzec `kot` dopasuje słowo 'kot' wszędzie gdzie wystąpi w tekście. Już to jest użyteczne do zwykłego wyszukiwania. Ale moc regex zaczyna się przy klasach znaków. Klasa znaków [abc] dopasowuje jeden znak: a, b lub c. [a-z] — dowolna mała litera. [A-Z] — wielka litera. [0-9] — cyfra. [a-zA-Z0-9] — litera lub cyfra. Negacja w klasie: [^abc] — wszystko oprócz a, b, c. Skrótowe klasy: \d to [0-9], \w to [a-zA-Z0-9_], \s to spacja/tab/nowa linia. Ich negacje: \D (nie-cyfra), \W (nie-znak-słowny), \S (nie-biały-znak). Ćwiczenie 1: napisz regex, który dopasowuje dowolną polską cyfrę. Ćwiczenie 2: napisz regex dopasowujący wielką literę.

Poziom 2: Kwantyfikatory i kotwice

Kwantyfikatory określają, ile razy poprzedni element ma się powtórzyć. ? — 0 lub 1 raz (element opcjonalny). * — 0 lub więcej razy. + — 1 lub więcej razy. {n} — dokładnie n razy. {n,} — co najmniej n razy. {n,m} — od n do m razy. Przykład: `\d{3}-\d{2}-\d{2}` dopasuje format 123-45-67. Kotwice zakotwiczają dopasowanie do pozycji: ^ — początek ciągu/linii. $ — koniec ciągu/linii. \b — granica słowa (przejście między \w a \W). Ćwiczenie 3: napisz regex dopasowujący ciąg złożony z 5 cyfr. Wskazówka: `^\d{5}$`. Ćwiczenie 4: znajdź wszystkie słowa zaczynające się na wielką literę. Wskazówka: `\b[A-ZŁŚÓĄŹĆĘŃ][a-ząęółśźćń]*\b`.

Poziom 3: Grupy i alternacja

Grupy i alternacja to narzędzia do budowania bardziej złożonych wzorców. Grupy przechwytujące (): traktują fragment regex jako jednostkę i zapamiętują dopasowanie. `(ab)+` dopasuje 'ab', 'abab', 'ababab'. Grupy nieprzechwytujące (?:): grupują bez zapamiętywania — `(?:ab)+`. Alternacja | — oznacza 'lub': `kot|pies` dopasuje 'kot' albo 'pies'. Z grupą: `(kot|pies)s?` dopasuje 'kot', 'koty', 'pies', 'psy'... no, prawie: `(kot|pies)y?`. Alternacja ma najniższy priorytet — `szary kot|pies` to `(szary kot)|(pies)`, nie `szary (kot|pies)`. Używaj grup dla precyzji. Ćwiczenie 5: napisz regex, który dopasowuje 'kolor' lub 'colour'. Ćwiczenie 6: dopasuj numer telefonu w formacie 500-100-200 lub 500 100 200 (dywiz lub spacja jako separator).

Poziom 4: Lookahead, lookbehind i asercje zerowej szerokości

To poziom zaawansowany, ale otwiera całkowicie nowe możliwości. Asercje zerowej szerokości sprawdzają kontekst bez konsumowania znaków. Positive lookahead (?=X): dopasuj coś, co jest poprzedzone czymś innym — ale ten kontekst nie jest częścią dopasowania. Przykład: `\d+(?= zł)` dopasuje liczbę przed ' zł', ale samo ' zł' nie będzie w dopasowaniu. Negative lookahead (?!X): `\bfree\b(?!\s+range)` — słowo 'free' niezapowiedziane przez ' range'. Positive lookbehind (?<=X): `(?<=@)\w+` — słowo po znaku @. Negative lookbehind (?<!X): `(?<!\d)\d{4}(?!\d)` — czteroznakowy rok (4 cyfry) nieotoczony innymi cyframi. Ćwiczenie 7: napisz regex, który dopasowuje ceny — liczby po których następuje ' PLN' lub ' zł', ale bez samej jednostki w dopasowaniu.

Często zadawane pytania

Jak długo zajmuje nauka regex?
Podstawy (literały, klasy, kwantyfikatory, kotwice) można opanować w kilka godzin. Biegłość w pisaniu złożonych wzorców wymaga miesięcy praktyki. Kluczem jest regularne ćwiczenie na realnych problemach — każdy raz gdy piszesz pętlę do parsowania tekstu, zastanów się czy regex by nie wystarczył.
Jakie zasoby polecasz do nauki regex po polsku?
Tester online (jak WikiPlus) do ćwiczeń to numer jeden. regexr.com ma świetne wbudowane wyjaśnienia każdego elementu. regex101.com z wybranym flavorem (JavaScript/Python/PHP) wyjaśnia każdy fragment wzorca. Książka 'Mastering Regular Expressions' (Jeffrey Friedl) to klasyk, dostępna po angielsku. Na YouTube wiele polskich tutoriali regex dla JS i Python.
Kiedy NIE używać regex?
Regex nie jest właściwy do parsowania HTML/XML/JSON (użyj dedykowanych parserów), do złożonej logiki biznesowej (użyj kodu), gdy wzorzec jest dłuższy niż ~80 znaków (rozważ podzielenie na kroki), gdy wydajność jest krytyczna na ogromnych zbiorach danych (rozważ indeksy bazy danych lub dedykowane algorytmy wyszukiwania).