Salt la conținutul principal
Modulul 8 · Lecția 3 din 431/32 în curs~12 min
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

Code
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?
  • https?:\/\/ -- schema, cu s opțional.
  • [\w.-]+ -- gazdă (domeniu, subdomenii, eventual localhost).
  • (?:\:\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:

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

Versiunea „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ă.

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

Precizie 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ă

Exercițiu#regex.m8.l3.e1
Încercări: 0Se încarcă…

Găsiți fiecare URL http sau https din text. Schemă + gazdă + cale opțională.

Se încarcă editorul...
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

Exercițiu#regex.m8.l3.e2
Încercări: 0Se încarcă…

Găsiți fiecare IPv4 (4 octeți zecimale separați prin puncte). Versiune permisivă, fără verificare 0-255.

Se încarcă editorul...
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ă

Exercițiu#regex.m8.l3.e3
Încercări: 0Se încarcă…

Find all IPv4 addresses in the format `X.X.X.X` (composed of four 1-to-3 digit numbers separated by dots).

Se încarcă editorul...
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