Перейти до основного вмісту
Модуль 8 · Урок 3 із 431/32 у курсі~12 min
Модульні уроки (3/4)

Витяг URL-адрес та IP-адрес

У вільному тексті (журнали, статті, дампи) часто потрібно отримати URL-адреси та IP-адреси. Давайте розглянемо надійні моделі для обох.

URL-адреси http/https

Code
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?
  • https?:\/\/ -- схема з s необов'язковим.
  • [\w.-]+ -- хост (домен, субдомени, можливо localhost).
  • (?:\:\d+)? -- додатковий порт.
  • (?:\/[^\s]*)? -- необов'язковий шлях, до першого пробілу.

Захоплює https://example.com, http://localhost:3000/api/users, https://docs.dev/path?query=value.

IPv4

IPv4 — це 4 десяткові октети, розділені крапками:

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

Версія "Досить добре": вона також приймає недійсні значення, наприклад 999.999.999.999. Для суворої версії вам знадобиться зміна діапазону (25[0-5]|2[0-4]\d|[01]?\d\d?), який набагато довший.

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

Точність проти стислості

Зіставлення URL-адрес або IP-адрес вимагає балансування допуску шаблону. Суворий IP-валідатор перевіряє, чи жоден октет не перевищує 255. Практичний екстрактор, з іншого боку, зазвичай шукає спрощені шаблони та делегує точну перевірку спеціальному коду.

Спробуйте

вправи#regex.m8.l3.e1
Спроби: 0Завантаження…

Знайдіть усі URL-адреси http або https у тексті. Схема + хост + додатковий шлях.

Завантаження редактора…
Показати підказку

https? для необов’язкового s, [\\w.-]+ для домену та групи (?:\\/[^\\s]*)? для додаткового шляху.

Рішення доступне після 3 спроб

Повторна вправа

вправи#regex.m8.l3.e2
Спроби: 0Завантаження…

Знайдіть кожен IPv4 (4 десяткові октети, розділені крапками). Дозвільна версія, без перевірки 0-255.

Завантаження редактора…
Показати підказку

Використовуйте (?:\\d{1,3}\\.){3}, щоб повторити 'октет + крапка' 3 рази, потім \\d{1,3} для останнього.

Рішення доступне після 3 спроб

Додатковий виклик

вправи#regex.m8.l3.e3
Спроби: 0Завантаження…

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

Завантаження редактора…
Показати підказку

Use \b to enforce boundaries, (?:\d{1,3}\.){3} to repeat the octet and dot three times, and finally \d{1,3}.

Рішення доступне після 3 спроб