Regex w praktyce - 10 przykładów, które przydają się na co dzień
Po co używać regex?
Wyrażenia regularne (Regular Expressions) to wzorce opisujące klasy tekstów — pozwalają znajdować, walidować i zamieniać fragmenty stringów w milisekundach. Przydają się w:
- walidacji formularzy (email, NIP, PESEL)
- analizie logów serwera
- czyszczeniu danych z CSV/Excel
- wyszukiwaniu w edytorze kodu (VS Code, Cursor)
- skryptach Bash, Python, JavaScript
Waliduj PESEL w walidatorze PESEL, a numery kont w walidatorze konta bankowego — pod spodem często działają podobne reguły.
Podstawowe metaznaki
| Znak | Znaczenie |
|---|---|
. | Dowolny znak (poza newline) |
\d | Cyfra 0–9 |
\w | Znak słowa (litera, cyfra, _) |
\s | Biały znak (spacja, tab) |
+ | Jedno lub więcej |
* | Zero lub więcej |
? | Zero lub jeden |
{n,m} | Od n do m wystąpień |
^ | Początek linii |
$ | Koniec linii |
[abc] | Jeden z: a, b, c |
(abc|def) | abc LUB def |
10 praktycznych przykładów
1. Email (uproszczony)
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
✅ jan.kowalski@firma.pl
❌ jan@firma (brak TLD)
2. Numer telefonu polski
^(\+48\s?)?(\d{3}[\s-]?\d{3}[\s-]?\d{3}|\d{2}[\s-]?\d{3}[\s-]?\d{2}[\s-]?\d{2})$
✅ +48 600 123 456, 22-123-45-67
3. Kod pocztowy PL
^\d{2}-\d{3}$
✅ 00-001
❌ 00001
4. URL (http/https)
^https?://[\w.-]+(?:\.[\w.-]+)+[\w\-._~:/?#\[\]@!$&'()*+,;=.]*$
5. Usuwanie podwójnych spacji
Znajdź: \s{2,}
Zamień na: (pojedyncza spacja)
6. Podział po separatorze (CSV)
[,;\t]
Użyj w Python: re.split(r'[,;\t]', linia)
7. Ekstrakcja liczb z tekstu
-?\d+(?:[.,]\d+)?
Z tekstu „Cena: 1 234,56 zł" wyciągnie 1234,56.
8. Filtrowanie znaków specjalnych
[^a-zA-Z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻ\s]
Usuwa wszystko poza literami, cyframi i spacją (polskie znaki uwzględnione).
9. Hasło — polityka bezpieczeństwa
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{12,}$
Min. 12 znaków, wielka, mała, cyfra, symbol. Wygeneruj hasło w generatorze haseł — więcej w silnych hasłach.
10. Zamiana w wielu liniach
Znajdź: ^(\d+)\. (.+)$
Zamień: - $2 ($1)
1. Element → - Element (1)
Grupy przechwytujące
Nawiasy () tworzą grupy — można odwołać się do nich w zamianie:
(\d{4})-(\d{2})-(\d{2})
Zamiana $3.$2.$1 zamieni 2026-06-27 na 27.06.2026. Przydatne przy timestamp Unix.
Flagi regex
| Flaga | Znaczenie |
|---|---|
i | Ignoruj wielkość liter |
m | Multiline (^ i $ per linia) |
g | Global (wszystkie dopasowania) |
s | . obejmuje newline |
Regex w popularnych narzędziach
| Narzędzie | Użycie |
|---|---|
| VS Code / Cursor | Ctrl+H, włącz ikonę .* |
| grep / ripgrep | rg "pattern" plik.txt |
| Python | import re; re.findall(...) |
| JavaScript | str.match(/pattern/g) |
| Excel | Ograniczone — lepiej Power Query |
Kiedy regex NIE jest najlepszy?
| Sytuacja | Lepsze rozwiązanie |
|---|---|
| Parsowanie HTML/XML | Parser DOM (BeautifulSoup) |
| JSON | JSON.parse() |
| Złożone daty | Biblioteka datetime |
| Walidacja PESEL/NIP | Dedykowany algorytm z sumą kontrolną |
Regex do HTML to klasyczny antywzorzec — struktura zagnieżdżona wymaga parsera.
Typowe pułapki
- Zbyt chciwy
.*— użyj.*?(non-greedy) lub konkretnych klas - Brak kotwic
^`$ — dopasowanie fragmentu zamiast całości - Polskie znaki — upewnij się, że encoding to UTF-8
- Backslash w Pythonie — surowe stringi
r"\d+"zamiast"\\d+"
Testowanie regex
- regex101.com — debugger z wyjaśnieniem
- Testuj na realnych danych (100+ wierszy)
- Sprawdź przypadki brzegowe: pusty string, bardzo długi, znaki Unicode
Regex a bezpieczeństwo
Walidacja po stronie klienta (regex w formularzu) nie zastępuje walidacji serwerowej. Atakujący może ominąć frontend. Regex w polityce haseł to minimum — hasła hashuj bcrypt/Argon2 (haszowanie haseł).
Przykład: czyszczenie listy emaili
Wejście:
jan@test.pl; anna@test.pl , błędny-email piotr@test.pl
Regex: [\w.-]+@[\w.-]+\.\w+
Wynik: 3 poprawne adresy.
Przykład: logi serwera — wyciąganie IP
^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
Z linii Apache: 192.168.1.1 - - [27/Jun/2026] "GET / HTTP/1.1" 200
Powiązane artykuły
- Silne hasła — jak tworzyć
- Timestamp Unix — jak czytać
- CSV vs JSON — kiedy co wybrać
- Przeliczanie jednostek
- Generator haseł
- Generator CSV
Podsumowanie
Regex to potężne narzędzie do walidacji i transformacji tekstu. Zacznij od prostych wzorców (^\d{2}-\d{3}$ dla kodu pocztowego), testuj na regex101 i unikaj nadmiernej złożoności. Przy danych strukturalnych sięgaj po dedykowane parsery.
