Lekcje modułu (3/4)
Wyodrębnianie adresów URL i IP
W wolnym tekście (logach, artykułach, zrzutach danych) często zachodzi potrzeba wyodrębnienia adresów URL oraz adresów IP. Przyjrzyjmy się solidnym wzorcom dla obu przypadków.
Adresy URL http/https
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?https?:\/\/-- schemat, z opcjonalną literąs.[\w.-]+-- host (domena, poddomeny, ewentualnielocalhost).(?:\:\d+)?-- opcjonalny port.(?:\/[^\s]*)?-- opcjonalna ścieżka, do pierwszego białego znaku.
Dopasowuje https://example.com, http://localhost:3000/api/users, https://docs.dev/path/sub.
IPv4
Adres IPv4 składa się z 4 oktetów dziesiętnych rozdzielonych kropkami:
Pattern: \b(?:\d{1,3}\\.){3}\d{1,3}\bWersja "wystarczająco dobra": akceptuje również nieprawidłowe wartości, takie jak 999.999.999.999. Wersja ścisła wymagałaby alternatywy zakresów (25[0-5]|2[0-4]\d|[01]?\d\d?), która jest znacznie dłuższa.
Pattern (ścisły): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bPrecyzja a zwięzłość
Dopasowywanie adresów URL lub IP wymaga zbalansowania tolerancji wzorca. Ścisły walidator IP sprawdza, czy żaden oktet nie przekracza 255. Z kolei praktyczny ekstraktor zazwyczaj szuka uproszczonych wzorców i deleguje szczegółową walidację do dedykowanego kodu.
Spróbuj sam
Znajdź każdy adres URL http lub https w tekście. Schemat + host + opcjonalna ścieżka.
Pokaż wskazówkę
https? dla opcjonalnego s, [\w.-]+ dla domeny oraz grupa (?:\/[^\s]*)? dla opcjonalnej ścieżki.
Rozwiązanie dostępne po 3 próbach
Ćwiczenie powtórzeniowe
Znajdź każdy adres IPv4 (4 oktety dziesiętne rozdzielone kropkami). Wersja tolerancyjna, bez sprawdzania zakresu 0-255.
Pokaż wskazówkę
Użyj (?:\d{1,3}\.){3}, aby powtórzyć wzorzec 'oktet + kropka' 3 razy, a następnie \d{1,3} dla ostatniego oktetu.
Rozwiązanie dostępne po 3 próbach
Dodatkowe wyzwanie
Znajdź wszystkie adresy IPv4 w formacie `X.X.X.X` (składające się z czterech liczb o długości od 1 do 3 cyfr, rozdzielonych kropkami).
Pokaż wskazówkę
Użyj \b do wymuszenia granic słów, (?:\d{1,3}\.){3} do powtórzenia oktetu z kropką trzy razy, a na końcu \d{1,3}.
Rozwiązanie dostępne po 3 próbach