שיעורי מודול (1/4)
מבט חיובי: `(?=...)`
מבט חיובי (?=...) הוא קביעה ברוחב אפסי:
הוא בודק שדפוס מסוים עוקב אחר המיקום הנוכחי, אבל ** כן
לא לצרוך** את התווים האלה.
Pattern: \d+(?= euro)
Sample: Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
^^^ ^^ההסתכלות קדימה (?= euro) דורשת שאחרי הספרות יופיע euro, אבל
ההתאמה כוללת רק את הספרות. 75 dollari אינו תואם (לא euro).
למה "רוחב אפס"
חשבו על ההסתכלות קדימה כעל תנאי בעמדה, לא כעל חלק מהמשחק:
- המשחק נפסק לפני המבט קדימה.
- המיקום "אחרי המשחק" הוא ההתחלה של הטקסט שנבדק על ידי המבט קדימה.
- ניסיון המשחק הבא עם הדגל
gיתחדש משם.
זה הופך אותו למושלם עבור חילוץ ערכים ללא ההקשר שלהם: מחירים ללא המטבע, מילים לפני סימן פיסוק וכן הלאה.
תכונות מבט קדימה וסריקה ברוחב אפס
נקודת מבט חיובית (?=...) מבטיחה שהתבנית שצוינה עוקבת אחר הנקודה הנוכחית, אך הסריקה מתחדשת מהמיקום שלפני ההסתכלות. זה מונע "צריכה" של חלקים מהטקסט שעשויים להיות נחוצים עבור התאמות עוקבות.
נסה את זה
חלץ רק את הספרות של מחירי האירו (רצפי הספרות ואחריהם 'אירו'). אין מטבע במשחק.
הצג רמז
העבר 'אירו' בתוך מבט קדימה (?= יורו): המחרוזת לא תהיה חלק מהמשחק.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
מצא כל מילה מיד אחריה נקודתיים `:` (אך מבלי לכלול את הנקודתיים בהתאמה).
הצג רמז
אותו היגיון: ה-`:` אינו בהתאמה, אבל זה תנאי מיקום.
הפתרון זמין לאחר 3 ניסיונות
אתגר נוסף
Find every word (e.g. function name) followed immediately by an open parenthesis `(`, excluding the parenthesis from the match.
הצג רמז
הזז את \\( (נמלט מסוגריים פתוחים) בתוך המבט החיובי (?=...).
הפתרון זמין לאחר 3 ניסיונות