שיעורי מודול (2/4)
מבט שלילי: `(?!...)`
המבט השלילי (?!...) היא האחות האפלה של המבט החיובי:
זה דורש שהתבנית הנתונה לא תפעל לפי המיקום הנוכחי. זה כן
עדיין רוחב אפס: אין תו נצרך.
Pattern: \d+(?! euro)
Sample: Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
^^רק 75 מתאים, מכיוון שזהו רצף הספרות היחיד שלא ואחריו
euro. הספרות 100 ו-25 עוקבות אחריהם euro והם
לא נכלל.
דפוסי מבט שלילי אופייניים
^(?!.*errore).*$-- שורה שאינה מכילה את המילה "שגיאה".\b(?!the\b)\w+\b-- מילה שאינהthe.(?!\s)-- המיקום הנוכחי אינו רווח לבן (שימושי כ"קצץ").
Pattern: ^(?!.*\.bak$).*$
Sample (multiline with flag m):
foto.jpg
backup.bak
documento.txt
Match: foto.jpg, documento.txt (excludes backup.bak)אי הכללות מתקדמות באמצעות מבט שלילי
המבט השלילי (?!...) חיוני להטמעת לוגיקה של אי הכללה (כמו אימות שסיסמה אינה מכילה מילים במילון או שמזהה אינו מילת מפתח שמורה כמו class או function).
נסה את זה
מצא כל מספר שלא ואחריו 'אירו' (ללא מחירי האירו).
הצג רמז
השתמש (?! ...) כדי לומר 'אסור לעקוב'. אסור להופיע אחרי רצף ה'יורו'.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
מצא כל מילה של לפחות 3 אותיות שאינה 'ה' (לא תלוית רישיות).
הצג רמז
מיד אחרי \\b פותחים מבט שלילי (?!ה\\b) שמוציא רק את המילה the.
הפתרון זמין לאחר 3 ניסיונות
אתגר נוסף
Find all words consisting of letters that do not contain the letter `x` at any position (e.g. match `test`, `game` but not `extra`, `box`).
הצג רמז
השתמש במבט שלילי (?!\\w*x) מיד אחרי המילה גבול \\b.
הפתרון זמין לאחר 3 ניסיונות