Модульні уроки (3/4)
Витяг URL-адрес та IP-адрес
У вільному тексті (журнали, статті, дампи) часто потрібно отримати URL-адреси та IP-адреси. Давайте розглянемо надійні моделі для обох.
URL-адреси http/https
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 десяткові октети, розділені крапками:
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\bВерсія "Досить добре": вона також приймає недійсні значення, наприклад
999.999.999.999. Для суворої версії вам знадобиться зміна діапазону
(25[0-5]|2[0-4]\d|[01]?\d\d?), який набагато довший.
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. Практичний екстрактор, з іншого боку, зазвичай шукає спрощені шаблони та делегує точну перевірку спеціальному коду.
Спробуйте
Знайдіть усі URL-адреси http або https у тексті. Схема + хост + додатковий шлях.
Показати підказку
https? для необов’язкового s, [\\w.-]+ для домену та групи (?:\\/[^\\s]*)? для додаткового шляху.
Рішення доступне після 3 спроб
Повторна вправа
Знайдіть кожен IPv4 (4 десяткові октети, розділені крапками). Дозвільна версія, без перевірки 0-255.
Показати підказку
Використовуйте (?:\\d{1,3}\\.){3}, щоб повторити 'октет + крапка' 3 рази, потім \\d{1,3} для останнього.
Рішення доступне після 3 спроб
Додатковий виклик
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 спроб