Direkt zum Hauptinhalt springen
eLearner.app
Modul 8 · Lektion 3 von 431/32 im Kurs~12 min
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

Code
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?
  • https?:\/\/ -- Schema, wobei das s optional 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:

Code
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.

Code
Pattern (strikt): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b

Prä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

Übung#regex.m8.l3.e1
Versuche: 0Wird geladen…

Finde jede http- oder https-URL im Text. Schema + Host + optionaler Pfad.

Editor wird geladen…
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

Übung#regex.m8.l3.e2
Versuche: 0Wird geladen…

Finde jede IPv4 (4 durch Punkte getrennte dezimale Oktette). Tolerante Version, keine 0-255 Prüfung.

Editor wird geladen…
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

Übung#regex.m8.l3.e3
Versuche: 0Wird geladen…

Finde alle IPv4-Adressen im Format `X.X.X.X` (bestehend aus vier Zahlen mit 1 bis 3 Ziffern, getrennt durch Punkte).

Editor wird geladen…
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