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

הסתכל מאחור: `(?<=...)` `(?<!...)`

מבט לאחור הם תמונת המראה של מבטים: הם נראים לפני המיקום הנוכחי, עדיין ברוחב אפס.

  • (?<=...) -- מבט חיובי מאחור: התבנית חייבת להקדים.
  • (?<!...) -- מבט שלילי מאחור: אין להקדים את התבנית.
Code
Pattern: (?<=\$)\d+
Sample:  Costo $100, sconto -25, totale $75.
                ^^^                  ^^

ה-$ אינו בהתאמה, אבל פועל כתנאי: רק ספרות קודם על ידי התאמת סימן הדולר.

מבט שלילי מאחור

Code
Pattern: (?<!\w)\d+
Sample:  Codice abc123 e numero 456.
                              ^^^

(?<!\w) דורש שלפני הספרות לא יהיה תו מילה: abc123 אינו נכלל (לפני 123 יש c, תואם \w), 456 (לפני יש רווח).

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

Code
\\$\\d+         matches "$100": the match includes the dollar sign.
(?<=\\$)\\d+    matches "100":  the match contains ONLY the digits.

אם אתה צריך לחלץ את הערך "נקי" ללא הקידומת, הסתכל אחורה היא הבחירה הנכונה.

תאימות מבט מאחור ב-JavaScript

מבט חיובי (?<=...) ושלילי (?<!...) מבט מאחור בדוק מה לפני המיקום הנוכחי. ב-JavaScript, הם נתמכים החל מ-ES2018; בדפדפנים ישנים יותר או במנועי Node.js מדור קודם, הם יגרמו לשגיאות הידור תחביר.

נסה את זה

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

חלץ רק את הסכום המספרי (ללא סימן $) מהמחירים בטקסט.

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

העבר \\$ בתוך מבט חיובי מאחור (?<=\\$): תנאי מיקום, לא חלק מההתאמה.

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

סקירת התרגיל

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

מצא כל רצף של ספרות שאין לפניהם אות או ספרה (כלומר, מספרים 'מבודדים', לא חלקי קוד כמו 'abc123').

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

השתמש במבט שלילי מאחור (?<!\\w) כדי לא לכלול כאשר יש אות או ספרה לפני.

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

אתגר נוסף

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

Find only the digits of negative numbers (digits preceded by the `-` sign), excluding the minus sign from the match.

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

הזיזו את סימן המינוס - בתוך מבט חיובי מאחור (?<=-).

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