שיעורי מודול (3/4)
חילוץ כתובות URL וכתובות IP
בטקסט חופשי (יומנים, מאמרים, dumps) מקובל לרצות לחלץ כתובות URL ו-כתובות IP. בואו נסתכל על דפוסים חזקים עבור שניהם.
http/https כתובות אתרים
Pattern: https?:\/\/[\w.-]+(?:\:\d+)?(?:\/[^\s]*)?https?:\/\/-- סכימה, עםsאופציונלי.[\w.-]+-- מארח (דומיין, תת-דומיינים, אוליlocalhost).(?:\:\d+)?-- יציאה אופציונלית.(?:\/[^\s]*)?-- נתיב אופציונלי, עד לרווח הלבן הראשון.
לוכדת https://example.com, http://localhost:3000/api/users,
https://docs.dev/path?query=value.
IPv4
IPv4 הוא 4 אוקטטים עשרוניים מופרדים בנקודות:
Pattern: \b(?:\d{1,3}\.){3}\d{1,3}\bגרסת "טוב מספיק": היא מקבלת גם ערכים לא חוקיים כמו
999.999.999.999. עבור הגרסה קפדנית תזדקק להחלפת טווח
(25[0-5]|2[0-4]\d|[01]?\d\d?), שהוא הרבה יותר ארוך.
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דיוק מול קיצור
התאמת כתובות אתרים או כתובות IP מחייבת איזון סובלנות דפוסים. מאמת IP קפדני מוודא שאף אוקטטה לא עולה על 255. מחלץ מעשי, לעומת זאת, מחפש בדרך כלל תבניות מפושטות ומאציל אימות משובח לקוד ייעודי.
נסה את זה
מצא כל http או https URL בטקסט. סכימה + מארח + נתיב אופציונלי.
הצג רמז
https? עבור ה-s האופציונליים, [\\w.-]+ עבור הדומיין, וקבוצה (?:\\/[^\\s]*)? עבור הנתיב האופציונלי.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
מצא כל IPv4 (4 אוקטטים עשרוניים מופרדים בנקודות). גרסה מתירנית, ללא בדיקה 0-255.
הצג רמז
השתמש ב-(?:\\d{1,3}\\.){3} כדי לחזור על 'אוקטט + נקודה' 3 פעמים, ואז ב-\\d{1,3} עבור האחרון.
הפתרון זמין לאחר 3 ניסיונות
אתגר נוסף
Find all IPv4 addresses in the format `X.X.X.X` (composed of four 1-to-3 digit numbers separated by dots).
הצג רמז
Use \b to enforce boundaries, (?:\d{1,3}\.){3} to repeat the octet and dot three times, and finally \d{1,3}.
הפתרון זמין לאחר 3 ניסיונות