Bài học theo mô-đun (3/4)
Trích xuất URL và IP
Trong văn bản tự do (nhật ký, bài viết, kết xuất), thông thường người ta muốn trích xuất URL và địa chỉ IP. Chúng ta hãy xem xét các mô hình mạnh mẽ cho cả hai.
URL http/https
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?https?:\/\/-- lược đồ, vớistùy chọn.[\w.-]+-- máy chủ (tên miền, tên miền phụ, có thể làlocalhost).(?:\:\d+)?-- cổng tùy chọn.(?:\/[^\s]*)?-- đường dẫn tùy chọn, tối đa khoảng trắng đầu tiên.
Chụp https://example.com, http://localhost:3000/api/users,
https://docs.dev/path?query=value.
IPv4
IPv4 là 4 octet thập phân được phân tách bằng dấu chấm:
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\bPhiên bản "Đủ tốt": nó cũng chấp nhận các giá trị không hợp lệ như
999.999.999.999. Đối với phiên bản nghiêm ngặt bạn cần thay đổi phạm vi
(25[0-5]|2[0-4]\d|[01]?\d\d?), dài hơn nhiều.
Pattern (strict): \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bChính xác và ngắn gọn
Việc so khớp URL hoặc IP yêu cầu dung sai mẫu cân bằng. Trình xác thực IP nghiêm ngặt xác minh rằng không có octet nào vượt quá 255. Mặt khác, trình trích xuất thực tế thường tìm kiếm các mẫu đơn giản hóa và ủy quyền xác thực tốt cho mã chuyên dụng.
Hãy thử nó
Tìm mọi URL http hoặc https trong văn bản. Lược đồ + máy chủ + đường dẫn tùy chọn.
Hiển thị gợi ý
https? đối với s tùy chọn, [\\w.-]+ cho tên miền và một nhóm (?:\\/[^\\s]*)? cho đường dẫn tùy chọn.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Tìm mọi IPv4 (4 octet thập phân cách nhau bằng dấu chấm). Phiên bản cho phép, không kiểm tra 0-255.
Hiển thị gợi ý
Sử dụng (?:\\d{1,3}\\.){3} để lặp lại 'octet + dấu chấm' 3 lần, sau đó là \\d{1,3} cho lần cuối cùng.
Giải pháp khả dụng sau 3 lần thử
Thử thách bổ sung
Find all IPv4 addresses in the format `X.X.X.X` (composed of four 1-to-3 digit numbers separated by dots).
Hiển thị gợi ý
Use \b to enforce boundaries, (?:\d{1,3}\.){3} to repeat the octet and dot three times, and finally \d{1,3}.
Giải pháp khả dụng sau 3 lần thử