Pelajaran modul (3/4)
Mengekstrak URL dan IP
Dalam teks bebas (log, artikel, dump) biasanya ingin mengekstrak URL dan alamat IP. Mari kita lihat pola yang kuat untuk keduanya.
URL http/https
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?https?:\/\/-- skema, dengansopsional.[\w.-]+-- host (domain, subdomain, mungkinlocalhost).(?:\:\d+)?-- port opsional.(?:\/[^\s]*)?-- jalur opsional, hingga spasi pertama.
Menangkap https://example.com, http://localhost:3000/api/users,
https://docs.dev/path?query=value.
IPv4
IPv4 adalah 4 oktet desimal yang dipisahkan oleh titik:
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\bVersi "Cukup baik": ia juga menerima nilai yang tidak valid seperti
999.999.999.999. Untuk versi ketat Anda memerlukan pergantian rentang
(25[0-5]|2[0-4]\d|[01]?\d\d?), yang lebih panjang.
Pattern (strict): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bPresisi versus singkatnya
Pencocokan URL atau IP memerlukan toleransi pola penyeimbangan. Validator IP yang ketat memverifikasi bahwa tidak ada oktet yang melebihi 255. Sebaliknya, ekstraktor praktis biasanya mencari pola yang disederhanakan dan mendelegasikan validasi halus ke kode khusus.
Cobalah
Temukan setiap URL http atau https dalam teks. Skema + host + jalur opsional.
Tunjukkan petunjuk
https? untuk s opsional, [\\w.-]+ untuk domain, dan grup (?:\\/[^\\s]*)? untuk jalur opsional.
Solusi tersedia setelah 3 upaya
Tinjau latihan
Temukan setiap IPv4 (4 oktet desimal dipisahkan oleh titik). Versi permisif, tidak ada centang 0-255.
Tunjukkan petunjuk
Gunakan (?:\\d{1,3}\\.){3} untuk mengulang 'oktet + titik' 3 kali, lalu \\d{1,3} untuk yang terakhir.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
Find all IPv4 addresses in the format `X.X.X.X` (composed of four 1-to-3 digit numbers separated by dots).
Tunjukkan petunjuk
Use \b to enforce boundaries, (?:\d{1,3}\.){3} to repeat the octet and dot three times, and finally \d{1,3}.
Solusi tersedia setelah 3 upaya