Leçons du module (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.
Afficher l'indice
https? per la s opzionale, [\\w.-]+ per il dominio, e un gruppo (?:\\/[^\\s]*)? per il path opzionale.
Solution disponible après 3 tentatives
Esercizio di ripasso
Trova ogni IPv4 (4 ottetti decimali separati da punti). Versione permissiva, niente check 0-255.
Afficher l'indice
Usa (?:\\d{1,3}\\.){3} per ripetere 3 volte 'ottetto + punto', poi \\d{1,3} per l'ultimo.
Solution disponible après 3 tentatives
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).
Afficher l'indice
Usa \b per limitare i confini, (?:\d{1,3}\.){3} per ripetere l'ottetto con punto 3 volte, e infine \d{1,3}.
Solution disponible après 3 tentatives