Python Regular Expressions - דף עזר
- ולריה איינבינדר
- תכנות
- 16 Oct, 2024
דוגמאות קוד רבות + טיפים שימושיים. בונוס נוסף בסוף הפוסט.
Regular Expressions הם כלי שימושי ביותר, וכמו כל מפתח, אני משתמשת בהם הרבה בעבודה עם טקסטים. מכיוון שאני תמיד שוכחת את תחביר הביטויים הרגולריים, חשבתי שיצירת דף עזר שיקצר לי את הדרך יכול לעזור לי ואולי גם לאחרים :)
מודול re פייתוני - פנקציות שימושיות והבדלים ביניהן
תזכורת: המודול re
ב-Python מיישם פונקציונליות של ביטויים רגולריים.
re.match
מתאים pattern של ביטוי רגולרי לתחילת מחרוזת
re.fullmatch
מתאים pattern של ביטוי רגולרי למחרוזת שלמה
re.search
מחפש מופע של pattern בתוך המחרוזת
re.sub
מבצעות החלפה של טקסט בהתאם לתבנית ביטוי רגולרי שנמצאה במחרוזת. היא דומה ל-re.search
בכך שהיא מחפשת את התבנית, אך במקום רק למצוא התאמה ראשונה, היא מחליפה את כל ההתאמה שנמצאה במחרוזת המקורית עם טקסט אחר .
re.findall
מחפש את כל המופעים של תבנית regex במחרוזת, בדומה לחיפוש באמצעותre.search
(מחזיר: רשימה של מחרוזות).
re.split
מפצל מחרוזת לפי המופעים של תבנית regex (מחזיר: רשימה של מחרוזות). ❗️שימו לב למחרוזות הריקות שמוחזרות ❗️
מטא-תווים מיוחדים
מטא-תווים עבור חזרות
טבלה הבאה מסכמת את כמות ההתאמות של חזרות (גרידיות) שהמודול re
מבצע עבור ה- Regular Expression. גרידיות משמעותה שהמודול re
ינסה להתאים כמה שיותר חזרות אפשריות.
מחלקות תווים שימושיות
טיפ שימושי מאוד: קיבוץ וחילוץ קבוצות.
קיבוץ מאפשר לא רק להתאים רצפי טקסט בתוך מחרוזות, אלא גם להפיק תתי רצפים לפי קבוצות שמגדירים בתבנית.
ניתן להגדיר קבוצות בתבנית באמצעות סוגריים עגולים — () — וכדי להפיק את הקבוצות מהרצפים המתוארים, יש לקרוא לפונקצייה group
על אובייקט re.Match
.
לדוגמה, נניח שאנחנו רוצים להתאים כתובת אימייל בתוך טקסט, אך אנו גם רוצים לחלץ בקלות את שם המשתמש, את הדומיין ואת הסיומת מתוך האימייל. כך שאם נקבל את הטקסט הבא: “abc@gmail.com”, אנו רוצים (1) לזהות שזו כתובת אימייל (לפי תבנית) ו-(2) לזהות ששם המשתמש באימייל הזה הוא “abc”, שם הדומיין הוא “gmail”, והסיומת היא “com”.
ראשית, נגדיר תבנית פשוטה שתזהה את האימייל הזה. שימו לב, אשתמש בתבנית מפושטת שאומרת שיש רק תווים אלפאנומריים בכל אחד מהרכיבים של האימייל, דבר שלא נכון במציאות, אבל זה יעבוד עבר הדוגמה שלנו.
עכשיו אוסיף קבוצות לתבנית. טכנית, אני פשוט מוסיפה סוגריים סביב חלקים שונים בתבנית שלי: שם המשתמש, הדומיין, והסיומת:
עכשיו אנו מוכנים להתאים את התבנית שלנו:
והנה מגיעה הקסם של הקבוצות! אנחנו יכולים לא רק לקבל את הטקסט המותאם, אלא גם לחלץ קבוצות נפרדות לפי אינדקס הקבוצה כפי שהוגדר בתבנית, בדיוק כך:
נחמד, אה?
דרך אגב, group(0)
יחזיר את המחרוזת השלמה שעונה על התבנית. במקרה שלנו: “your_name@gmail.com”
Bonus
לפעמים אתם רוצים לשחק עם כל השיטות האלה ואתם זקוקים לזה במהירות, לכן ארגנו את כל השיטות בקובץ Google Colab שיהיה פשוט מאוד לשחק איתו.
רק אל תשכחו להריץ את הפקודה import re
בתחילת הקובץ.
זהו זה לבינתיים, תיהנו!