Passer au contenu principal
eLearner.app
Module 8 · Leçon 3 sur 431/32 dans le cours~12 min
Leçons du module (3/4)

Extraire des URL et des IP

Dans un texte libre (journaux/logs, articles, dumps), il est courant de vouloir extraire des URLs et des adresses IP. Voyons des motifs robustes pour les deux.

URLs http/https

Code
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?
  • https?:\/\/ -- schéma, avec le s facultatif.
  • [\w.-]+ -- hôte (domaine, sous-domaines, éventuellement localhost).
  • (?:\:\d+)? -- port facultatif.
  • (?:\/[^\s]*)? -- chemin facultatif, jusqu'au premier espace blanc.

Capture https://example.com, http://localhost:3000/api/users, https://docs.dev/path/sub.

IPv4

Une adresse IPv4 est constituée de 4 octets décimaux séparés par des points :

Code
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\b

Version "suffisamment bonne" : elle accepte également des valeurs invalides comme 999.999.999.999. Pour la version stricte, il faudrait une alternance de plages (25[0-5]|2[0-4]\d|[01]?\d\d?), ce qui est beaucoup plus long.

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

Précision versus brièveté

La correspondance des URLs ou des adresses IP nécessite d'équilibrer la tolérance du motif. Un validateur IP strict vérifie qu'aucun octet ne dépasse 255. Un extracteur pratique, en revanche, recherche généralement des motifs simplifiés et délègue la validation fine à un code dédié.

À vous de jouer

Exercice#regex.m8.l3.e1
Tentatives : 0Chargement…

Trouvez chaque URL http ou https dans le texte. Schéma + hôte + chemin facultatif.

Chargement de l'éditeur…
Afficher l'indice

https? pour le s facultatif, [\w.-]+ pour le domaine, et un groupe (?:\/[^\s]*)? pour le chemin facultatif.

Solution disponible après 3 tentatives

Exercice de révision

Exercice#regex.m8.l3.e2
Tentatives : 0Chargement…

Trouvez chaque IPv4 (4 octets décimaux séparés par des points). Version permissive, sans vérification de 0-255.

Chargement de l'éditeur…
Afficher l'indice

Utilisez (?:\d{1,3}\.){3} pour répéter 'octet + point' 3 fois, puis \d{1,3} pour le dernier.

Solution disponible après 3 tentatives

Défi supplémentaire

Exercice#regex.m8.l3.e3
Tentatives : 0Chargement…

Trouvez toutes les adresses IPv4 au format `X.X.X.X` (composées de quatre nombres de 1 à 3 chiffres séparés par des points).

Chargement de l'éditeur…
Afficher l'indice

Utilisez \b pour forcer les limites, (?:\d{1,3}\.){3} pour répéter l'octet et le point trois fois, et enfin \d{1,3}.

Solution disponible après 3 tentatives