Vai al contenuto
eLearner.app
Modulo 8 · Lezione 3 di 431/32 nel corso~12 min
Lezioni del modulo (3/4)

Estrarre URL e IP

In testo libero (log, articoli, dump) capita spesso di voler estrarre URL e indirizzi IP. Vediamo pattern robusti per entrambi.

URL http/https

Code
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?
  • https?:\/\/ -- schema, con la s opzionale.
  • [\w.-]+ -- host (dominio, sottodomini, eventuale localhost).
  • (?:\:\d+)? -- porta opzionale.
  • (?:\/[^\s]*)? -- path opzionale, fino al primo whitespace.

Cattura https://example.com, http://localhost:3000/api/users, https://docs.dev/path?query=value.

IPv4

Un IPv4 e' 4 ottetti decimali separati da punti:

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

Versione "abbastanza buona": accetta anche valori invalidi tipo 999.999.999.999. Per la versione stretta servirebbe alternazione di range (25[0-5]|2[0-4]\d|[01]?\d\d?), che e' molto piu' lunga.

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

Precisione contro brevità

Cercare URL o IP richiede di bilanciare la tolleranza del pattern. Un validatore IP rigoroso controlla che ciascun ottetto non superi 255. Un estrattore pratico invece cerca tipicamente pattern semplificati, delegando la validazione fine ad altre funzioni dedicate.

Prova tu

Esercizio#regex.m8.l3.e1
Tentativi: 0Caricamento…

Trova ogni URL http o https nel testo. Schema + host + path opzionale.

Caricamento editor…
Mostra suggerimento

https? per la s opzionale, [\\w.-]+ per il dominio, e un gruppo (?:\\/[^\\s]*)? per il path opzionale.

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#regex.m8.l3.e2
Tentativi: 0Caricamento…

Trova ogni IPv4 (4 ottetti decimali separati da punti). Versione permissiva, niente check 0-255.

Caricamento editor…
Mostra suggerimento

Usa (?:\\d{1,3}\\.){3} per ripetere 3 volte 'ottetto + punto', poi \\d{1,3} per l'ultimo.

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#regex.m8.l3.e3
Tentativi: 0Caricamento…

Trova tutti gli indirizzi IPv4 del formato `X.X.X.X` (composti da quattro numeri da 1 a 3 cifre separati da punti).

Caricamento editor…
Mostra suggerimento

Usa \b per limitare i confini, (?:\d{1,3}\.){3} per ripetere l'ottetto con punto 3 volte, e infine \d{1,3}.

Soluzione disponibile dopo 3 tentativi