Lektionen des Moduls (3/4)
URLs und IPs extrahieren
In freiem Text (Logs, Artikeln, Dumps) möchte man oft URLs und IP-Adressen extrahieren. Sehen wir uns robuste Muster für beides an.
http/https URLs
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?https?:\/\/-- Schema, wobei dassoptional ist.[\w.-]+-- Host (Domain, Subdomains, evtl.localhost).(?:\:\d+)?-- optionaler Port.(?:\/[^\s]*)?-- optionaler Pfad, bis zum ersten Whitespace.
Erfasst https://example.com, http://localhost:3000/api/users, https://docs.dev/path/sub.
IPv4
Eine IPv4 besteht aus 4 durch Punkte getrennten dezimalen Oktetten:
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\b"Gut genug" Version: Sie akzeptiert auch ungültige Werte wie 999.999.999.999. Für die strikte Version bräuchte man eine Bereichsalternation (25[0-5]|2[0-4]\d|[01]?\d\d?), die viel länger ist.
Pattern (strikt): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bPräzision versus Kürze
Das Matchen von URLs oder IPs erfordert das Abwägen der Mustertoleranz. Ein strikter IP-Validator prüft, dass kein Oktett 255 überschreitet. Ein praktischer Extractor hingegen sucht typischerweise nach vereinfachten Mustern und delegiert die Detailvalidierung an dedizierten Code.
Probiere es aus
Finde jede http- oder https-URL im Text. Schema + Host + optionaler Pfad.
Hinweis anzeigen
https? für das optionale s, [\w.-]+ für die Domain und eine Gruppe (?:\/[^\s]*)? für den optionalen Pfad.
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Finde jede IPv4 (4 durch Punkte getrennte dezimale Oktette). Tolerante Version, keine 0-255 Prüfung.
Hinweis anzeigen
Verwende (?:\d{1,3}\.){3}, um 'Oktett + Punkt' 3-mal zu wiederholen, dann \d{1,3} für das letzte.
Lösung nach 3 Versuchen verfügbar
Zusätzliche Herausforderung
Finde alle IPv4-Adressen im Format `X.X.X.X` (bestehend aus vier Zahlen mit 1 bis 3 Ziffern, getrennt durch Punkte).
Hinweis anzeigen
Verwende \b für Grenzen, (?:\d{1,3}\.){3}, um Oktett und Punkt dreimal zu wiederholen, und schließlich \d{1,3}.
Lösung nach 3 Versuchen verfügbar