Lecții din modul (3/4)
Extragerea adreselor URL și IP-urilor
În textul liber (jurnale, articole, depozite) este obișnuit să doriți să extrageți URL-uri și adrese IP. Să ne uităm la modele robuste pentru ambele.
URL-uri http/https
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?https?:\/\/-- schema, cusopțional.[\w.-]+-- gazdă (domeniu, subdomenii, eventuallocalhost).(?:\:\d+)?-- port opțional.(?:\/[^\s]*)?-- cale opțională, până la primul spațiu alb.
Captură https://example.com, http://localhost:3000/api/users,
https://docs.dev/path?query=value.
IPv4
Un IPv4 are 4 octeți zecimale separați prin puncte:
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\bVersiunea „destul de bună”: acceptă și valori nevalide, cum ar fi
999.999.999.999. Pentru versiunea strict, ai nevoie de alternarea intervalului
(25[0-5]|2[0-4]\d|[01]?\d\d?), care este mult mai lungă.
Pattern (strict): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bPrecizie versus concizie
Potrivirea adreselor URL sau IP-urilor necesită echilibrarea toleranței modelului. Un validator IP strict verifică că niciun octet nu depășește 255. Un extractor practic, pe de altă parte, caută de obicei modele simplificate și delegă validarea fină codului dedicat.
Încearcă
Găsiți fiecare URL http sau https din text. Schemă + gazdă + cale opțională.
Afișează indiciu
https? pentru s-ul opțional, [\\w.-]+ pentru domeniu și un grup (?:\\/[^\\s]*)? pentru calea opțională.
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Găsiți fiecare IPv4 (4 octeți zecimale separați prin puncte). Versiune permisivă, fără verificare 0-255.
Afișează indiciu
Folosiți (?:\\d{1,3}\\.){3} pentru a repeta „octet + punct” de 3 ori, apoi \\d{1,3} pentru ultima.
Soluție disponibilă după 3 încercări
Provocare suplimentară
Find all IPv4 addresses in the format `X.X.X.X` (composed of four 1-to-3 digit numbers separated by dots).
Afișează indiciu
Use \b to enforce boundaries, (?:\d{1,3}\.){3} to repeat the octet and dot three times, and finally \d{1,3}.
Soluție disponibilă după 3 încercări