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
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?https?:\/\/-- isteğe bağlısile şema.[\w.-]+-- ana bilgisayar (etki alanı, alt etki alanları, muhtemelenlocalhost).(?:\:\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:
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.
Pattern (strict): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bKesinlik 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
Metindeki her http veya https URL'sini bulun. Şema + ana bilgisayar + isteğe bağlı yol.
İ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
Her IPv4'ü bulun (noktalarla ayrılmış 4 ondalık sekizli). İzin verilen sürüm, 0-255 kontrolü yok.
İ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
Find all IPv4 addresses in the format `X.X.X.X` (composed of four 1-to-3 digit numbers separated by dots).
İ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