Lompati ke konten utama
Modul 8 · Pelajaran 3 dari 431/32 dalam kursus~12 min
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

Code
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?
  • https?:\/\/ -- skema, dengan s opsional.
  • [\w.-]+ -- host (domain, subdomain, mungkin localhost).
  • (?:\:\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:

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

Versi "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.

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

Presisi 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

Latihan#regex.m8.l3.e1
Upaya: 0Memuat…

Temukan setiap URL http atau https dalam teks. Skema + host + jalur opsional.

Memuat editor…
Tunjukkan petunjuk

https? untuk s opsional, [\\w.-]+ untuk domain, dan grup (?:\\/[^\\s]*)? untuk jalur opsional.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#regex.m8.l3.e2
Upaya: 0Memuat…

Temukan setiap IPv4 (4 oktet desimal dipisahkan oleh titik). Versi permisif, tidak ada centang 0-255.

Memuat editor…
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

Latihan#regex.m8.l3.e3
Upaya: 0Memuat…

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

Memuat editor…
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