מדריך מלא לכללי Regex: מה הם, איך הם פועלים ודוגמאות מעשיות

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

דוגמה לכללי Regex

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

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

מהם כללי Regex או ביטויים רגולריים?

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

הרעיון הבסיסי הוא תאר, באמצעות סדרה של סמלים, אותיות ואופרטורים מיוחדים, את התבנית שהטקסט שאנו רוצים לאתר, לאמת או לשנות חייב לעמוד בה.לדוגמה, אם ברצונך למצוא את כל המספרים בביטוי, תוכל להגדיר תבנית פשוטה שאומרת "כל תו מספרי" (כגון \dאם אתם רוצים משהו מתקדם יותר, תוכלו לבנות כללים מורכבים כמו: "כל המחרוזות שמתחילות ב-'העתק' ומסתיימות במספר".

תחביר רגנקס

היסטוריה ואבולוציה של Regex

ביטויים רגולריים נולדו באמצע המאה ה-20, בתחום הלוגיקה הפורמלית ותורת האוטומטים. השימוש המעשי הראשון בו היה במערכות מבוססות יוניקס, עם תוכנות כגון ed, grep, צמא y awkלאחר מכן, התקן POSIX הרחיבה את התחביר שלה ושילבה אותו במגוון רחב של סביבות. מאוחר יותר, השפה פרל לקחה את Regex לרמה חדשה, הוסיפה תכונות חדשות והפיכה אותן לפופולריות בקהילת המפתחים.

בהווה, Regex מובנה ברוב שפות התכנות (JavaScript, Python, Java, C#, PHP, Ruby וכו'), כמו גם עורכי טקסט מתקדמים, מערכות הפעלה, מסגרות אינטרנט ומגוון כלי עזר לשורת פקודה. זה הופך את כללי Regex לשפה אוניברסלית באמת לעיבוד טקסט בכל הקשר מחשוב.

למה נועדו כללי Regex?

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

  • מציאת דפוסים בטקסטים גדולים: מצא כתובות דוא"ל, כתובות URL, שמות, מספרים, תאריכים ועוד - אפילו בקבצים או מסדי נתונים ענקיים - ללא מאמץ ידני.
  • אימות קלט משתמש: בודק אם סיסמה עומדת בדרישות, האם מספר טלפון או כתובת דוא"ל נכונים לפני שמירתם.
  • עריכה והחלפה של טקסט: החלפת חלקים ספציפיים של טקסט, החל מהסרת תגי HTML ועד נרמול פורמטי נתונים.
  • אוטומציה של תהליכים: סנן יומנים, הפוך רשימות, נתח קבצי יומן או שנה שם של קבצים באופן גורף בהתאם לכללים מדויקים מאוד.

יסודות רגולקס: מושגים בסיסיים

כללי רֶגֶקס מורכבים משילוב של תווים ליטרליים ומטא-תווים. הבנת אלמנטים אלה היא הבסיס לבניית תבניות שימושיות.

1. תווים מילוליים

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

2. מטא-תווים: כוחו של רֶגֶקס

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

  • . הנקודה מייצגת כל תו מלבד מעבר שורה.
  • [] סוגריים מגדירים מחלקות או קבוצות של תווים מותרים.
  • ^ הסימפקס יכול לסמן את תחילתה של שורה/מילה, או, אם הוא מוקף בסוגריים, את השלילה של קבוצה.
  • $ סמל הדולר מציין את סוף השורה או הטקסט.
  • * הכוכבית מאפשרת לך לחפש "אפס חזרות או יותר" של האלמנט הקודם.
  • + סימן הפלוס מחפש "חזרה אחת או יותר".
  • ? מציין שהאלמנט הקודם הוא אופציונלי (אפס או פעם אחת).
  • () סוגריים מקבצים חלקים של ביטוי כדי להחיל כימות, לחלץ תת-קבוצות או להגדיר חלופות.
  • | הפס האנכי מייצג חלופה לוגית "או".
  • \ הקו הנטוי ההפוך חומק מהמשמעות המיוחדת של התו הבא או מציג רצפים מקוצרים (כגון \d, \w, \s).

3. כמותיות: שליטה על חזרה

כימות מאפשרות לך להגדיר כמה פעמים יש לחזור על תו, מחלקה או קבוצה:

  • *אפס חזרות או יותר.
  • +פעם אחת או יותר.
  • ?פעם אחת או בכלל לא (אופציונלי).
  • {נ}בדיוק n חזרות.
  • {נ,}: לפחות n פעמים (אין מקסימום).
  • {נ,מ}: בין n y m חזרות.

4. סוגי תווים וקיצורים

מחלקות תווים מאפשרות לנו לצמצם עוד יותר את מה שאנחנו רוצים לחפש:

  • [az]: כל אות קטנה.
  • [AZ]: אות גדולה.
  • [0-9]: כל ספרה.
  • [א ב ג]: האות א', ב' או ג'.
  • [^xyz]כל תו מלבד x, i z.
  • \dספרה עשרונית (שווה ערך ל-[0-9]).
  • \Dכל דמות ש לא להיות ספרה.
  • \wתו מילה (אות, מספר או קו תחתון; שווה ערך ל-[a-zA-Z0-9_]).
  • \Wכל תו שאינו מילה.
  • \sרווח לבן (רווח, טאב, מעבר שורה).
  • \Sכל תו שאינו רווח.

5. עוגנים: הצבת התבנית בתוך הטקסט

עוגנים מאפשרים לך למקם תבניות בתחילת או בסוף שורה, או בתחילת/סוף מילים.

  • ^: תחילת שורה או טקסט.
  • $סוף שורה או טקסט.
  • \bגבול מילים (התחלה או סוף).
  • \Bנקודת גבול שאינה מילולית (פנימית).

דוגמאות מעשיות של כללי Regex

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

  • אימות כתובות דוא"ל: ^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$
  • איתור מספרי DNI: \b\d{8}[- ]?[trwagmyfpdxbnjzsqvhlcke]?\b
  • זיהוי כתובות IP v4: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$
  • חילוץ כתובות URL מתגיות HTML:
  • זיהוי שורות עם הערות ב-Java: //[^\r\n]*[\r\n]

לוגיקה מתקדמת והתאמה אישית של תבניות

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

קבוצות ועמותות

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

לדוגמה, הביטוי ((ma)+b) יתאים ל-"mab" או ל-"mamab", אך לא ל-"maab". ניתן יהיה להפנות לקבוצות מאוחר יותר באמצעות \1, \2וכו', אידיאלי למציאת דפוסים חוזרים דומים.

חלופות (|): "או" לוגי ב-Regex

הפס האנכי | מאפשר לך להגדיר חלופות: כל אחת מהתבניות המופרדות על ידי סמל זה תהיה תקפה. לדוגמה, (boy|girl) יתאים לשתי המילים.

מטא-תווים בריחה באמצעות \

הקו הנטוי ההפוך \ חיוני לנטרל את המשמעות המיוחדת של מטא-תו או להכניס רצפים מקוצרים. לדוגמה, "\." מחפש נקודה מילולית, "\?" מחפש סימן שאלה, "\\" מחפש את הקו האלכסוני עצמו וכו'.

כימות חמדנים ועצלנים

כברירת מחדל, כימותים של Regex הם חמדניים: הם מקבלים כמה שיותר טקסט. ? זה שונה ל"עצלן", אשר לוכד את המינימום הנדרש.

לדוגמה: כֶּלֶב ימצא את המחרוזת הארוכה ביותר בין "perr" ל-"o", בעוד כֶּלֶב יתפוס את המינימום.

טענות וגישות מסביב

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

  • מבט חיובי קדימה: (?=תבנית) בדוק ש"תבנית" נמצאת לאחר המיקום הנוכחי.
  • מבט שלילי קדימה: (?!תַבְנִית) ודאו ש"תבנית" אינה קיימת למטה.
  • מבט חיובי/שלילי לאחור: (?<=תבנית) y (? הם עושים את אותו הדבר "הפוך".

יישומים מעשיים של Regex בעולם האמיתי

Regex משמש במגוון רחב של תחומים ומשימות יומיומיות:

  • אימות טופס: כתובות דוא"ל, מספרי טלפון, שמות, סיסמאות חזקות.
  • עיבוד יומנים וביקורת מערכתחיפוש דפוסים בקבצי יומן, חילוץ שגיאות ואזהרות.
  • קידום אתרים (SEO) וניהול כתובות URLכתיבת מחדש של כתובות URL בקובץ .htaccess, מסנני פרמטרים, פילוח חיפוש.
  • עריכת טקסט בכמות גדולהניקוי תגי HTML, הסרת רווחים מיותרים, נרמול נתונים בגיליונות אלקטרוניים, התאמת קוד מדור קודם.
  • פיתוח אתרים ואוטומציהבדיקות אוטומטיות, הגדרת כללי שרת, פיתוח סקראפרים.

טעמים ומנועי Regex שונים

לא כל מימושי ה-Regex תומכים באותן יכולות; ישנם "טעמים" שונים בהתאם לשפה, לכלי או למנוע בו נעשה שימוש.

  • פוסיקס: תחביר ראשוני המבוסס על יוניקס. פחות נרחב מ-Perl או PCRE.
  • פרל/PCRE: הם מקיפים מאוד, תומכים ב-lookarounds, הפניות מתקדמות, מכפילי ותת-שגרות.
  • javascript: נמצא בשימוש נרחב באינטרנט, תואם לרוב המפעילים, אך ישנן מגבלות ב-lookbehind (למעט גרסאות מודרניות).
  • .NET ושפות אחרות: בדרך כלל הם תואמים ל-PCRE, אך תמיד מומלץ לעיין בתיעוד של השפה עצמה.

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

כיצד לבדוק ולבנות תבניות Regex משלך

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

  • regex101.comמאפשר לך לכתוב דפוסים, לבדוק תוצאות, לצפות בהסברים וסטטיסטיקות ביצועים.
  • regexr.com: : אפשרויות עזרה שלב אחר שלב נהדרות, גרפיקה חזותית ודוגמאות אינטראקטיביות.
  • הסברים חזותיים ומחוללי קודאידיאלי להבנת דפוסים מורכבים וליצירת ביטויים מאפס.
  • משחקים ואימונים אונלייןלמד באמצעות משחק ופתור אתגרים אמיתיים כדי להפנים כיצד Regex עובד.

טעויות נפוצות וטיפים מעשיים לשליטה ב-Regex

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

  • מטא-תווים של בריחה כאשר אתה מחפש את הערך המילולי שלו. לדוגמה, השתמש \. לצורך הנקודה, \* עבור הכוכבית, \? לחקירה.
  • אין להשתמש יתר על המידה בנקודה (.) ובתו הכללי .*. הם מאוד שימושיים, אך הם יכולים להחזיר תוצאות לא רצויות אם לא תגדירו היטב את הדפוס שלכם.
  • הוסיפו עוגנים (^, $) כאשר ברצונכם להגביל את התבנית לתחילתה או לסוףה של שורה. ולהימנע מהתאמות חלקיות.
  • השתמשו בכמויות ספציפיות בעת חיפוש חזרות מדויקות, במקום להסתמך אך ורק על * או +.
  • תמיד נסו להשתמש בדוגמאות חיוביות ושליליות. בדרך זו ניתן לזהות האם התבנית מכסה את כל המקרים הדרושים מבלי לייצר תוצאות חיוביות שגויות.
  • הפרד ומשול: אם יש לכם תבנית מורכבת מאוד, בנו אותה בחלקים ושלבו את השברים בסוף.
  • אל תהססו לבדוק דפי צ'יטים, תיעוד ופורומים. לראות דוגמאות וטריקים יומיומיים.

שילוב Regex בשפות תכנות וכלים

רֶגֶקס משולב בפונקציות הנפוצות ביותר של כל השפות העיקריות. כמה דוגמאות:

  • javascript: שיטות מבחן (), exec () של אובייקט RegExp, ושיטות התאמה(), לחפש(), החלף (), לְפַצֵל() של מחרוזת.
  • פִּיתוֹן: המודול re מספק פונקציות כגון לחפש(), התאמה(), מצא הכל(), תַת(), וכו '
  • PHP: פונקציות preg_match (), preg_replace (), preg_split() ואחרים
  • .נֶטוֹ: Clase רגקס עם שיטות מתקדמות ותמיכה ב-PCRE.

בעורכים כמו VSCode, Sublime, Atom או Notepad++, ניתן גם להשתמש ב-Regex כדי לחפש ולהחליף. ובמערכות יוניקס, כלי עזר כמו grep, צמא y awk לשלב מנוע Regex משלהם.

Regex בקידום אתרים וניהול כתובות URL

Regex הוא מרכיב מפתח לאופטימיזציה של כתובות URL, ניתוב אתרים וניהול פרמטרים דינמי בפלטפורמות כמו וורדפרס, ג'ומלה ומסחר אלקטרוני.

  • .htaccess ו-mod_rewrite: הם מאפשרים לך להמיר כתובות URL מכוערות ומלאות פרמטרים לכתובות ידידותיות בעזרת כללי Regex. בדרך זו, www.ejemplo.com/index.php?p=123 יכול להפוך ל www.ejemplo.com/articulo/titulo-amigable, מה שמשפר הן את קידום האתרים (SEO) והן את חוויית המשתמש.
  • סינון פרמטרים: לחלץ, לנקות או לשנות פרמטרים בכתובת האתר כדי להתאים את התוצאות להקשרים שונים של חיפוש.

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

ביטויים רגולריים מתקדמים: טכניקות ומשאבים

Regex לא רק מאפשר חיפושים ישירים; הוא תומך בקיבוץ מותנה, תת-שגרות, רקורסיה, הפניות לאחור ועוד. זה הופך אותו לכלי חיוני למשימות מורכבות.

  • תת-שגרות והפניות לאחור: הם מאפשרים לך למצוא דפוסים חוזרים, סימטריות, רצפים ואימותים ספציפיים מאוד.
  • תנאים: בצע חיפושים או אימותים שונים בהתבסס על מה שנלכד בקבוצות קודמות.
  • רקורסיה: חלק מהמנועים המתקדמים מאפשרים לך להגדיר דפוסים שחלים על עצמם, וזה מאוד שימושי בעת עיבוד נתונים מובנים כגון XML או JSON.
  • שינויים גלובליים: ‏(/g, /i, /m ב-Perl/JavaScript) מאפשרים חיפושים גלובליים, חיפושים שאינם תלויי רישיות או חיפושים מרובי שורות.

משאבים חיוניים ללימוד Regex

אם אתם רוצים להרחיב את הידע שלכם, המשאבים הבאים יהיו שימושיים:

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

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