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
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?https?:\/\/-- schema, con lasopzionale.[\w.-]+-- host (dominio, sottodomini, eventualelocalhost).(?:\:\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:
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\bVersione "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.
Pattern (stretto): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bPrecisione 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
Trova ogni URL http o https nel testo. Schema + host + path opzionale.
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
Trova ogni IPv4 (4 ottetti decimali separati da punti). Versione permissiva, niente check 0-255.
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
Trova tutti gli indirizzi IPv4 del formato `X.X.X.X` (composti da quattro numeri da 1 a 3 cifre separati da punti).
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