Ana içeriğe geç
Modül 8 · Ders 3 ders 4Kurstaki 31/32~12 min
Modül dersleri (3/4)

URL'leri ve IP'leri çıkarma

Serbest metinde (günlükler, makaleler, dökümler) URL'leri çıkarmak istemek yaygındır ve IP adresleri. Her ikisi için de sağlam modellere bakalım.

http/https URL'leri

Code
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?
  • https?:\/\/ -- isteğe bağlı s ile şema.
  • [\w.-]+ -- ana bilgisayar (etki alanı, alt etki alanları, muhtemelen localhost).
  • (?:\:\d+)? -- isteğe bağlı bağlantı noktası.
  • (?:\/[^\s]*)? -- ilk boşluğa kadar isteğe bağlı yol.

https://example.com, http://localhost:3000/api/users yakalar, https://docs.dev/path?query=value.

IPv4

Bir IPv4, noktalarla ayrılmış 4 ondalık sekizliden oluşur:

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

"Yeterince iyi" sürümü: Ayrıca aşağıdaki gibi geçersiz değerleri de kabul eder: 999.999.999.999. katı sürüm için aralık değişimine ihtiyacınız olacaktır (25[0-5]|2[0-4]\d|[01]?\d\d?), ki bu çok daha uzun.

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

Kesinlik ve kısalık

URL'lerin veya IP'lerin eşleştirilmesi, kalıp toleransının dengelenmesini gerektirir. Katı bir IP doğrulayıcı, hiçbir sekizlinin 255'i aşmadığını doğrular. Öte yandan pratik bir çıkarıcı, genellikle basitleştirilmiş kalıplar arar ve hassas doğrulamayı özel koda devreder.

Deneyin

Egzersiz#regex.m8.l3.e1
Denemeler: 0Yükleniyor…

Metindeki her http veya https URL'sini bulun. Şema + ana bilgisayar + isteğe bağlı yol.

Düzenleyici yükleniyor…
İpucu göster

https? isteğe bağlı s için, alan adı için [\\w.-]+ ve bir grup (?:\\/[^\\s]*)? isteğe bağlı yol için.

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#regex.m8.l3.e2
Denemeler: 0Yükleniyor…

Her IPv4'ü bulun (noktalarla ayrılmış 4 ondalık sekizli). İzin verilen sürüm, 0-255 kontrolü yok.

Düzenleyici yükleniyor…
İpucu göster

'Sekizli + nokta'yı 3 kez tekrarlamak için (?:\\d{1,3}\\.){3} kullanın, ardından sonuncusu için \\d{1,3} kullanın.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#regex.m8.l3.e3
Denemeler: 0Yükleniyor…

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

Düzenleyici yükleniyor…
İpucu göster

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

3 denemeden sonra çözüm mevcut