לפני מספר חודשים פורסמה, כי נוספה תמיכה עבור-Regex בתוך Excel, מאחר ועדיין לא עודכנה הגרסה האחרונה לכולם ויש גרסאות שלא יתמכו, חשוב להזכיר שב-Google Sheets כבר מזמן האפשרות קיימת לשימוש נרחב בכלי זה וכל אחד יכול להשתמש היום ללא עלות. מה זה Regex? Regex (או Regular Expressions) הוא כלי רב עוצמה לזיהוי, התאמה ושינוי של טקסטים על סמך דפוסים.
השימוש ב REGEX מתבצע בעזרת הפונקציות:
- REGEXMATCH (REGEXTEST באקסל)
- REGEXREPLACE
- REGEXEXTRACT
השימוש ב REGEX מחליף ו/או מוסיף ל Google Sheets פונקציות רבות שנדרשות לביצוע פעולות מורכבות כמו:
אFIND - חיפוש טקסט מדויק בתוך תא.עם תוספת REGEXMATCH, ניתן לחפש דפוסים מורכבים בהרבה. לדוגמה, במקום חיפוש של מילה מסוימת, ניתן לחפש כל טקסט שמתחיל באותיות מסוימות או מכיל תבנית ייחודית.
אSEARCH - חיפוש טקסט עם אפשרות להתעלם מרישיות (case-insensitive). תוספת של REGEXMATCH מאפשר חיפוש גמיש יותר, כולל חיפוש של קבוצות תווים, מספרים ואפילו שלילת דפוסים מסוימים.
אSUBSTITUTE - החלפה של טקסט מסוים בתוך תא. עם REGEXREPLACE, אפשר להחליף דפוסים מורכבים ולא רק טקסטים מדויקים.
אLEFT, RIGHT, MID - חילוץ תווים לפי מיקום. באמצעות REGEXEXTRACT, מאפשר חילוץ של חלקים מהטקסט על פי תבנית ולא רק על פי מיקום קבוע.
אימות נתונים - שימוש ב REGEXMATCH מאפשר לבדוק נתונים בגיליון בהתאם לתבניות מוגדרות מראש, מה שמספק גמישות בבדיקת תקינות המידע. במקום להגדיר כללים פשוטים כמו מספרים בתחום מסוים או רשימת ערכים קבועה, ניתן להשתמש ב-REGEX כדי לאמת פורמטים מורכבים, כמו מספרי טלפון, כתובות מייל, או מבנים ייחודיים אחרים.
חיפוש אותיות
התאמת טקסט מסוים
דפוס פשוט כמו "abc" ימצא כל תא המכיל את הטקסט "abc".
דוגמה:נניח שיש לכם בעמודה A רשימת מילים, ואתם רוצים לבדוק מי מהן מכילה את המילה "שלום".השתמשו בפונקציה:
=REGEXMATCH(A1, "שלום")
תוצאה: הפונקציה תחזיר TRUE עבור כל תא המכיל את הטקסט "שלום".
אימות כל האותיות הקטנות או הגדולות
כדי לבדוק האם תא מכיל כל אות שהיא: [a-z] - אותיות באנגלית קטנות. [A-Z] - אותיות באנגלית גדולות. [א-ת] - כל האותיות בעברית.
דוגמה לבדוק האם תא מכיל אות בעברית:
=REGEXMATCH(A1, "[א-ת]")
חיפוש מספרים
מספר בודד
הדפוס [0-9] ימצא כל ספרה בין 0 ל-9.
דוגמה לבדוק האם תא מכיל מספר כלשהו:
=REGEXMATCH(A1, "[0-9]")
רצף מספרים
אם רוצים למצוא מספרים בעלי יותר מסיפרה אחת, השתמשו ב-[0-9]+.
"+" מציין התאמה לרצף של תווים (לפחות אחד).
דוגמה לבדיקת תאים שמכילים רצף מספרים:
=REGEXMATCH(A1, "[0-9]+")
חיפוש תווים מסוימים או שלילתם
התאמת תו מסוים [abc] - יתאים ל-a, b, או c. [abc^] - יתאים לכל תו שהוא לא a, b, או c.
דוגמה:
בדיקת תאים שמכילים תווים שאינם ספרות:
=REGEXMATCH(A1, "[^0-9]")
באמצעות הפונקציה REGEXREPLACE עם אותה תבנית כמו בדוגמה הקודמת אפשר "לנקות" תווים לא רצויים.
שלוש דוגמאות פרקטיות:
יש לכם טבלה בעמודה A יש רשימת מיילים, אתם מעוניינים להוציא את הדומיין מכתובת המייל, נכתוב את הנוסחה:
=REGEXEXTRACT(C1, "@([a-zA-Z0-9.-]+)")
הסבר:
@ מזהה את הסימן @ שמפריד בין שם המשתמש לשם הדומיין. +[a-zA-Z0-9.-] מזהה את הדומיין, שמורכב מאותיות, מספרים, נקודות "." ומקף אמצעי "-".
הסוגריים () יוצרים קבוצה שמחזירה את מה שבתוכה בלבד, ומתעלמת ממה שמחוץ לה, כאן, ללא הסימן @.
קיבלתם רשימת שמות ממערכת, הרשימה הגיעה עם הרבה תווים לא רצויים שאינם אותיות:
נכתוב את הנוסחה:
=REGEXREPLACE(A3,"[^A-Z,a-z]",)
התו ^ בתוך סוגריים מרובעים מציין שלילה. כלומר, חפש כל תו שאינו תואם לדפוס שבסוגריים.
מזהה אותיות באנגלית, גם קטנות (a-z) וגם גדולות (A-Z).
ז"א אנחנו מחפשים כל אות שהיא לא אות גדולה או קטנה באנגלית ומחליפים אותה בכלום.
הפרדה של שמות
קיבלנו רשימה של שם ושם משפחה באותו תא ואנחנו רוצים להפריד בינהם, נרשום את הנוסחה:
=REGEXEXTRACT(H6,"([א-ת]+) ([א-ת]+)")
רישום סט האותיות [א-ת] בסוגריים מרובעים פעמיים, כשכל סט מופרד בסוגריים ובינהם רווח, גורם להפרדה של מחרוזת טקסט לפני ואחרי הרווח.
רשימה חלקית של תווים שאפשר להשתמש בהם ב REGEX:
\d digit, same as[0-9]
\D non-digit
\S non-whitespace character
\s whitespace character[ \t\n\r\f]
\W non-word character
\w word character[0-9A-Za-z_]
[^ ] any single character NOT of set
* 0 or more previous regular expression
*? 0 or more previous regular expression (non-greedy)
+ 1 or more previous regular expression
+? 1 or more previous regular expression (non-greedy)
? 0 or 1 previous regular expression
בהצלחה!
Comments