מדריך למתחילים לביטויים רגילים באמצעות פייתון

מדריך למתחילים לביטויים רגילים באמצעות פייתון

אם אתה מתכנת, רוב הסיכויים שאתה כבר יודע מה הם ביטויים רגילים (regex). דפוסי Regex יושמו כמעט בכל שפת תכנות רגילה, אך עדיין, הכוח והרבגוניות של דפוסים אלה אינם מוכרים על ידי רוב המפתחים.





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





מהם ביטויים רגילים?

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





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

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



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

מדוע הודעות הטקסט שלי אינן מועברות

ביטויים רגילים: התאמת דמויות ורצפים

Regex היא שפה חדשה לגמרי בפני עצמה. מנוע regex מפרש תבניות המורכבות מכמה תווים המצוידים במשמעויות ספציפיות. מילולי יסוד כמו תווים אלפאנומריים תואמים את עצמם. אבל תווים מורכבים כמו $, *, +, {, וכו 'מסייעים בהתאמה בסדר גבוה יותר.





  1. כוכבית (*): תואם את התו הקודם לאפס או יותר פעמים. המשמעות המילולית של הדמות תהיה 'אלמנט מוכפל n פעמים'. לדוגמה, אם הביטוי הרגיל הוא א ב ג * , המיתרים המותאמים יהיו ab, abc, abcc, abccc, abcccc וכו 'הביטוי [לִפנֵי הַסְפִירָה]* יתאים bc, bcbc, bcbc וכו '.
  2. עוד (+): תואם את הדמות הקודמת פעם אחת או יותר. העבודה של + אופי דומה ל * , אבל ה + תו משמיט את התבנית אם התו אינו מופיע. לדוגמה, abc + יתאים abc, abcc, abccc וכו 'אבל לא ab.
  3. סימן שאלה (?): תואם את התו הקודם אפס או פעם אחת. למשל, התבנית א ב ג? יתאים ab ו- abc בלבד.
  4. צינור (|): משמש כבינארי אוֹ מַפעִיל. תואם את אחת מהדמויות שקדמו והצליחו בצינור. לדוגמה, א | ב יתאים או a או b.
  5. נקודה (.): תואם דמות שזהותה אינה ידועה. לדוגמה, א.ק יתאים aac, abc, acc, a2c וכן הלאה.
  6. גזר (^): תואם את הדמות הראשונה בתבנית. לדוגמה, ^רא יתאים למילים שמתחילות ב- הַחוּצָה כגון ארנב, דביקים ואקראי.
  7. דולר ($): תואם את התו האחרון בתבנית. לדוגמה, $ יתאים למילים המסתיימות ב- א כגון ואן, דן ותכנית.
  8. מקף (-): משמש להגדרת טווח תווים. לדוגמה, [0-9] יתאים לכל התווים המספריים החד ספרתיים.

רצפים מיוחדים המשמשים בדפוסי הבעה רגילים הם:

  1. ל: מחזירה התאמה אם התווים הבאים מצויים בתחילת המחרוזת. לדוגמה, AThe יתאים למילים המתחילות ב- ה כגון The, Them, They, וכו '.
  2. b: מחזירה התאמה אם הדמות נמצאת בתחילת או בסוף מילה. לדוגמה, במד ו מטורף ב יתאים למילים כגון עָשׂוּי ו נווד בהתאמה.
  3. B: מחזירה התאמה אם התו אינו נמצא בתחילת או בסוף מילה.
  4. d: תואם תווים מספריים הקיימים במחרוזת. לדוגמה, /d* יתאים למספרים כמו 1, 12, 1232 וכו '.
  5. D: תואם תווים לא מספריים במחרוזת. יתאים a, b, c, f, וכו '.
  6. s: התאמה לדמות רווח לבן בטקסט.
  7. S: תואם תו שאינו שטח לבן בטקסט.
  8. ב: מחזירה התאמה אם המחרוזת מכילה תווים אלפאנומריים כולל קווים תחתונים. לדוגמה, ב יתאים a, b, c, d, 1, 2, 3 וכו '.
  9. IN: מחזירה התאמה אם המחרוזת אינה מכילה תווים אלפאנומריים או קו תחתון.
  10. עם: התאמת תווים בסוף מחרוזת. לדוגמה, סוף Z יתאים למילים המסתיימות ב- סוֹף כגון עיקול, תיקון, נטייה וכו '.

שיטות פייתון לביטויים רגילים

ב- Python, ה- מִחָדָשׁ הספרייה מספקת את כל הפונקציות והכלים הדרושים לצורך יישום regex בתוכניות שלך. אינך צריך להוריד את הספרייה באמצעות pip מכיוון שהיא מותקנת מראש עם מתורגמן Python.





כדי לייבא את מִחָדָשׁ ספריית Python, הוסף את הקוד הבא לסקריפט שלך:

import re

שים לב שבעוד העברת ביטויים רגילים ב- Python, אנו משתמשים במחרוזות גולמיות מכיוון שהם אינם מפרשים תווים מיוחדים כגון n ו t באופן שונה.

התאמה()

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

re.match(pattern, string)

...איפה תבנית הוא הביטוי הקבוע ו חוּט הוא הטקסט שצריך לחפש.

תסתכל על קטע הקוד למטה.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

ה r תו לפני שהמחרוזת מייצגת מחרוזת גולמית.

תְפוּקָה:

None

הקוד הנ'ל מחזיר אף אחד כי מִלָה לא היה נוכח בתחילת המחרוזת.

אם נמצאה התאמה, תוכל להדפיס את ההתאמה באמצעות קְבוּצָה() שיטה השייכת לאובייקט regex.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

תְפוּקָה:

Word

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

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

שימו לב ש התאמה() ו לחפש() שיטות יחזירו רק התאמת דפוס אחת. בקוד הנ'ל, מִלָה מופיע פעמיים. אבל ה לחפש() הפונקציה תתאים רק להופעה הראשונה של המילה.

Word

מצא הכל()

כפי שאתה כבר יכול לנחש, ה מצא הכל() method מחזירה כל התאמה אפשרית במחרוזת.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

במקום להחזיר אובייקט regex, הפונקציה findall () מחזירה רשימה של כל ההתאמות. אתה יכול לחזור על הרשימה באמצעות א ללולאה בפייתון .

לְפַצֵל()

אם אתה רוצה לפצל מחרוזת למחרוזות משנה באמצעות תבנית כמפריד, אז לְפַצֵל() הפונקציה היא זו שאתה צריך.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

תְפוּקָה:

['This word', 'that', 'this are different.']

תַת()

ה תַת() השיטה מאפשרת למשתמש להחליף מילה ספציפית במקום תבנית. זה דורש את הטיעונים הבאים.

re.sub(pattern, replacement, string)

שקול קטע קוד זה:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

תְפוּקָה:

Dave or Harry must be punished.

לְלַקֵט()

ה re.compile () שיטה ב מִחָדָשׁ הספרייה מאפשרת למשתמש לאחסן גרסה מורכבת של תבנית הביטוי הרגיל בזיכרון. לאחר מכן, באמצעות האובייקט המורכב, המשתמש יכול לסנן במהירות את זבל הטקסט שצוין לדפוסים תואמים.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

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

נצל את העוצמה של Regex עם פייתון

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

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

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל גיליון הרמאים של Python RegEx למתכנתים מתחממים

השתמש ברשימה זו של ביטויים רגילים של פייתון, כך שתוכל להשתפר בשימוש בשפת תכנות תכליתית זו.

קרא הבא
נושאים קשורים
  • תִכנוּת
  • תִכנוּת
  • פִּיתוֹן
על הסופר דיפש שארמה(79 מאמרים פורסמו)

Deepesh הוא העורך הצעיר של Linux ב- MUO. הוא כותב מדריכי מידע על לינוקס, במטרה לספק חוויה מאושרת לכל החדשים. לא בטוח לגבי סרטים, אבל אם אתה רוצה לדבר על טכנולוגיה, הוא הבחור שלך. בזמנו הפנוי אתה יכול למצוא אותו קורא ספרים, מאזין לז'אנרים מוסיקליים שונים או מנגן בגיטרה שלו.

עוד מאת דיפש שארמה

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה