בדיקות לאחור
שיעור 21 מתוך 28 בקורס ביטויים רגולריים ב-Python של Coddy.
מבט לאחור הם assertions שמאפשרים להתאים קבוצת תווים רק אם לפניה מופיעה תבנית מסוימת (מבט לאחור חיובי) או אם לא מופיעה לפניה תבנית מסוימת (מבט לאחור שלילי). כמו מבטים קדימה, מבטים לאחור אינם צורכים תווים במחרוזת.
- מבט לאחור חיובי
<strong>(?<=...)</strong>: מתאים קבוצת תווים רק אם לפניה מופיעה תבנית מסוימת. - מבט לאחור שלילי
<strong>(?<!...)</strong>: מתאים קבוצת תווים רק אם לא מופיעה לפניה תבנית מסוימת.
import re
text = "1foo 2foo 3foo foo"
pattern_positive = r"(?<=\d)foo"
pattern_negative = r"(?<!\d)foo"
matches_positive = re.findall(pattern_positive, text)
matches_negative = re.findall(pattern_negative, text)
print("Matches with positive lookbehind:", matches_positive) # פלט: ['foo']
print("Matches with negative lookbehind:", matches_negative) # פלט: ['foo', 'foo', 'foo']בדוגמה שלמעלה, התבנית (?<=\d)foo מתאימה ל-"foo" רק אם לפניה מופיעה ספרה, ואילו התבנית (?<!\d)foo מתאימה ל-"foo" רק אם לא מופיעה לפניה ספרה.
אתגר
קלכתוב פונקציה בשם find_words_preceded_by_numbers שמקבלת מחרוזת טקסט כקלט ומחזירה רשימה של מילים שקודם להן מופיע מספר.
נסו בעצמכם
import re
def find_words_preceded_by_numbers(text):
# כתבו כאן קודכל השיעורים ביחידה ביטויים רגולריים ב-Python
1מבוא
מבואתרגלו בעצמכם: קומפיילר Python אונליין