דילוג לתוכן המרכזי
מודול 6 · שיעור 2 מתוך 422/32 בקורס~10 min
שיעורי מודול (2/4)

מבט שלילי: `(?!...)`

המבט השלילי (?!...) היא האחות האפלה של המבט החיובי: זה דורש שהתבנית הנתונה לא תפעל לפי המיקום הנוכחי. זה כן עדיין רוחב אפס: אין תו נצרך.

Code
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) -- המיקום הנוכחי אינו רווח לבן (שימושי כ"קצץ").
Code
Pattern: ^(?!.*\.bak$).*$
Sample (multiline with flag m):
  foto.jpg
  backup.bak
  documento.txt
Match: foto.jpg, documento.txt (excludes backup.bak)

אי הכללות מתקדמות באמצעות מבט שלילי

המבט השלילי (?!...) חיוני להטמעת לוגיקה של אי הכללה (כמו אימות שסיסמה אינה מכילה מילים במילון או שמזהה אינו מילת מפתח שמורה כמו class או function).

נסה את זה

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

מצא כל מספר שלא ואחריו 'אירו' (ללא מחירי האירו).

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

השתמש (?! ...) כדי לומר 'אסור לעקוב'. אסור להופיע אחרי רצף ה'יורו'.

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

סקירת התרגיל

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

מצא כל מילה של לפחות 3 אותיות שאינה 'ה' (לא תלוית רישיות).

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

מיד אחרי \\b פותחים מבט שלילי (?!ה\\b) שמוציא רק את המילה the.

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

אתגר נוסף

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

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