דילוג לתוכן המרכזי
מודול 8 · שיעור 3 מתוך 431/32 בקורס~12 min
שיעורי מודול (3/4)

חילוץ כתובות URL וכתובות IP

בטקסט חופשי (יומנים, מאמרים, dumps) מקובל לרצות לחלץ כתובות URL ו-כתובות IP. בואו נסתכל על דפוסים חזקים עבור שניהם.

http/https כתובות אתרים

Code
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 אוקטטים עשרוניים מופרדים בנקודות:

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

גרסת "טוב מספיק": היא מקבלת גם ערכים לא חוקיים כמו 999.999.999.999. עבור הגרסה קפדנית תזדקק להחלפת טווח (25[0-5]|2[0-4]\d|[01]?\d\d?), שהוא הרבה יותר ארוך.

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

דיוק מול קיצור

התאמת כתובות אתרים או כתובות IP מחייבת איזון סובלנות דפוסים. מאמת IP קפדני מוודא שאף אוקטטה לא עולה על 255. מחלץ מעשי, לעומת זאת, מחפש בדרך כלל תבניות מפושטות ומאציל אימות משובח לקוד ייעודי.

נסה את זה

פעילות גופנית#regex.m8.l3.e1
ניסיונות: 0טוען...

מצא כל http או https URL בטקסט. סכימה + מארח + נתיב אופציונלי.

טוען עורך...
הצג רמז

https? עבור ה-s האופציונליים, [\\w.-]+ עבור הדומיין, וקבוצה (?:\\/[^\\s]*)? עבור הנתיב האופציונלי.

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#regex.m8.l3.e2
ניסיונות: 0טוען...

מצא כל IPv4 (4 אוקטטים עשרוניים מופרדים בנקודות). גרסה מתירנית, ללא בדיקה 0-255.

טוען עורך...
הצג רמז

השתמש ב-(?:\\d{1,3}\\.){3} כדי לחזור על 'אוקטט + נקודה' 3 פעמים, ואז ב-\\d{1,3} עבור האחרון.

הפתרון זמין לאחר 3 ניסיונות

אתגר נוסף

פעילות גופנית#regex.m8.l3.e3
ניסיונות: 0טוען...

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 ניסיונות