Python Regular Expressions - דף עזר

Python Regular Expressions - דף עזר

  • ולריה איינבינדר
  • תכנות
  • 16 Oct, 2024

דוגמאות קוד רבות + טיפים שימושיים. בונוס נוסף בסוף הפוסט.


Regular Expressions הם כלי שימושי ביותר, וכמו כל מפתח, אני משתמשת בהם הרבה בעבודה עם טקסטים. מכיוון שאני תמיד שוכחת את תחביר הביטויים הרגולריים, חשבתי שיצירת דף עזר שיקצר לי את הדרך יכול לעזור לי ואולי גם לאחרים :)

מודול re פייתוני - פנקציות שימושיות והבדלים ביניהן

תזכורת: המודול re ב-Python מיישם פונקציונליות של ביטויים רגולריים.

import re statement, שלב בסיסי בקידוד Python לייבוא ​​מודול הביטויים הרגולריים לעיבוד טקסט והתאמת דפוסים.

  • re.match מתאים pattern של ביטוי רגולרי לתחילת מחרוזת

קטע קוד של Python המדגים התאמת ביטוי רגולרי באמצעות הפונקציה re.match() עם דוגמאות להתאמת תווים ותבניות ספציפיות בתוך מחרוזת.

  • re.fullmatch מתאים pattern של ביטוי רגולרי למחרוזת שלמה

קטע קוד של Python המדגים התאמה מלאה של ביטוי רגולרי באמצעות הפונקציה re.fullmatch(), עם דוגמאות להתאמת מחרוזות או תבניות שלמות בתוך מחרוזת.

  • re.search מחפש מופע של pattern בתוך המחרוזת

קטע קוד של Python המדגים חיפוש ביטוי רגולרי באמצעות הפונקציה re.search, עם דוגמאות למציאת תווים ותבניות ספציפיות בתוך מחרוזת, משימה נפוצה ביישומי למידת מכונה.

  • re.sub מבצעות החלפה של טקסט בהתאם לתבנית ביטוי רגולרי שנמצאה במחרוזת. היא דומה ל- re.search בכך שהיא מחפשת את התבנית, אך במקום רק למצוא התאמה ראשונה, היא מחליפה את כל ההתאמה שנמצאה במחרוזת המקורית עם טקסט אחר .

קטע קוד של Python המדגים החלפת ביטוי רגולרי באמצעות הפונקציה re.sub, עם דוגמאות להחלפת תווים ודפוסים ספציפיים בתוך מחרוזת, משימה נפוצה ביישומי עיבוד שפה טבעית (NLP).

  • re.findall מחפש את כל המופעים של תבנית regex במחרוזת, בדומה לחיפוש באמצעות re.search (מחזיר: רשימה של מחרוזות).

קטע קוד של Python המדגים ביטוי רגולרי שמוצא את כל ההתרחשויות באמצעות הפונקציה re.findall(), עם דוגמאות למציאת מופעים מרובים של תווים ודפוסים ספציפיים בתוך מחרוזת, משימה נפוצה בלמידת מכונה ויישומי בינה מלאכותית.

  • re.split מפצל מחרוזת לפי המופעים של תבנית regex (מחזיר: רשימה של מחרוזות). ❗️שימו לב למחרוזות הריקות שמוחזרות ❗️

קטע קוד של Python המדגים פיצול ביטוי רגולרי באמצעות הפונקציה re.split(), עם דוגמאות לפיצול מחרוזת המבוססת על תבניות שונות, משימה נפוצה בעיבוד מקדים של טקסט.

מטא-תווים מיוחדים

טבלה המסבירה את המטא-תווים של ביטוי רגולרי והמשמעויות המתאימות שלהם, כולל דוגמאות לאופן שבו הם משמשים כדי להתאים דפוסים שונים בתוך מחרוזות, מושג בסיסי בפיתוח צ'טבוט. קטע קוד של Python המדגים התאמת ביטוי רגולרי באמצעות הפונקציה re.match() עם דוגמאות להתאמת תבניות תווים שונות בתוך מחרוזות, כולל תווים בודדים, טווחי תווים וקבוצות תווים.

מטא-תווים עבור חזרות

טבלה הבאה מסכמת את כמות ההתאמות של חזרות (גרידיות) שהמודול re מבצע עבור ה- Regular Expression. גרידיות משמעותה שהמודול re ינסה להתאים כמה שיותר חזרות אפשריות.

טבלה שמסבירה את המטא-תווים של מכמת ביטוי רגולרי ואת המשמעויות המתאימות שלהם, חיונית להתאמת דפוסים בקידוד Python. קטע קוד של Python המדגים התאמת ביטוי רגולרי באמצעות הפונקציה re.match() עם דוגמאות להתאמת תבניות תווים שונות בתוך מחרוזות, כולל תווים בודדים, טווחי תווים וקבוצות תווים.

מחלקות תווים שימושיות

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

טיפ שימושי מאוד: קיבוץ וחילוץ קבוצות.

קיבוץ מאפשר לא רק להתאים רצפי טקסט בתוך מחרוזות, אלא גם להפיק תתי רצפים לפי קבוצות שמגדירים בתבנית.

ניתן להגדיר קבוצות בתבנית באמצעות סוגריים עגולים — () — וכדי להפיק את הקבוצות מהרצפים המתוארים, יש לקרוא לפונקצייה group על אובייקט re.Match.

לדוגמה, נניח שאנחנו רוצים להתאים כתובת אימייל בתוך טקסט, אך אנו גם רוצים לחלץ בקלות את שם המשתמש, את הדומיין ואת הסיומת מתוך האימייל. כך שאם נקבל את הטקסט הבא: “abc@gmail.com”, אנו רוצים (1) לזהות שזו כתובת אימייל (לפי תבנית) ו-(2) לזהות ששם המשתמש באימייל הזה הוא “abc”, שם הדומיין הוא “gmail”, והסיומת היא “com”.

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

קטע קוד של Python המגדיר דפוס ביטוי רגולרי כדי להתאים לכתובות אימייל, תוך שימוש בתחביר הרקס, משימה נפוצה בקורסי קידוד של Python.

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

קטע קוד של Python המגדיר דפוס ביטוי רגולרי כדי להתאים לכתובות אימייל, תוך שימוש בתחביר הרקס, משימה נפוצה בפיתוח Python.

עכשיו אנו מוכנים להתאים את התבנית שלנו:

קטע קוד של Python המדגים התאמת ביטוי רגולרי באמצעות הפונקציה re.match לאימות כתובת דוא"ל, עם התבנית המשמשת כדי להתאים את שם המשתמש, שם הדומיין והדומיין ברמה העליונה.

והנה מגיעה הקסם של הקבוצות! אנחנו יכולים לא רק לקבל את הטקסט המותאם, אלא גם לחלץ קבוצות נפרדות לפי אינדקס הקבוצה כפי שהוגדר בתבנית, בדיוק כך:

קטע קוד של Python המדגים כיצד לחלץ חלקים מכתובת דוא"ל מותאמת באמצעות הפונקציה re.match() ושיטת group(), מחזירה את שם המשתמש, שם הדומיין והדומיין ברמה העליונה.

נחמד, אה?

דרך אגב, group(0) יחזיר את המחרוזת השלמה שעונה על התבנית. במקרה שלנו: “your_name@gmail.com

Bonus

לפעמים אתם רוצים לשחק עם כל השיטות האלה ואתם זקוקים לזה במהירות, לכן ארגנו את כל השיטות בקובץ Google Colab שיהיה פשוט מאוד לשחק איתו.

רק אל תשכחו להריץ את הפקודה import re בתחילת הקובץ.


זהו זה לבינתיים, תיהנו!

תגיות :
שתף :

פוסט קשור

Google Colab - כלי חובה למפתחים ו-Data Scientists

Google Colab - כלי חובה למפתחים ו-Data Scientists

13 פיצ'רים וטיפים שימושייםמה זה Google Colab?Colaboratory, או בקיצור "Colab", הוא מוצר של Google Research. כלי זה מאפשר לכל אחד לכתוב ולהריץ קוד

קרא עוד