ביטוי רגולרי (regexp) הוא רצף ספציפי של תווים שמתאים בצורה רחבה או מצומצמת יותר לדפוסים בנתונים. אתם יכולים להשתמש בביטויים רגולריים כדי ליצור מסננים גמישים יותר בתרשימים ובאמצעי בקרה. אפשר גם להשתמש בפונקציות הביטויים הרגולריים הבאות בנוסחאות של שדות מחושבים:
| תפקיד | תיאור |
|---|---|
REGEXP_CONTAINS |
הפונקציה מחזירה true אם ערך הקלט מכיל את תבנית הביטוי הרגולרי, אחרת היא מחזירה false. מידע נוסף על REGEXP_CONTAINS |
REGEXP_EXTRACT |
הפונקציה מחזירה את מחרוזת המשנה הראשונה בערך הקלט שתואמת לתבנית הביטוי הרגולרי. מידע נוסף על REGEXP_EXTRACT |
REGEXP_MATCH |
הפונקציה מחזירה true אם ערך הקלט תואם לתבנית הביטוי הרגולרי, אחרת היא מחזירה false. מידע נוסף על REGEXP_MATCH |
REGEXP_REPLACE |
הפונקציה מחליפה את כל המופעים של טקסט שתואמים לדפוס הביטוי הרגולרי בערך הקלט במחרוזת replacement. מידע נוסף על REGEXP_REPLACE |
חלופות לשימוש בביטויים רגולריים
יצירת ביטויים רגולריים יכולה להיות מסובכת. לפני שמשתמשים בפונקציית regexp, כדאי לשקול אם אפשר להשיג את המטרה באמצעות פונקציית טקסט פשוטה יותר. הפונקציות הבאות מספקות פונקציונליות שדומה לביטוי רגולרי, בלי שתצטרכו לדעת את התחביר של הביטוי הרגולרי.
| תפקיד | תיאור |
|---|---|
CONTAINS_TEXT |
הפונקציה מחזירה את הערך True אם הטקסט שצוין נמצא בשדה או בביטוי, אחרת היא מחזירה את הערך False. |
ENDS_WITH |
הפונקציה מחזירה את הערך True אם השדה או הביטוי מסתיימים בטקסט שצוין, אחרת היא מחזירה את הערך False. |
LEFT_TEXT |
הפונקציה מחזירה מספר תווים מתחילת המחרוזת שצוינה. |
REPLACE |
הפונקציה מחזירה עותק של הטקסט המקורי, שבו כל המופעים של הטקסט לחיפוש מוחלפים בטקסט החלופי. |
RIGHT_TEXT |
הפונקציה מחזירה מספר תווים מסוף המחרוזת שצוינה. |
STARTS_WITH |
הפונקציה מחזירה את הערך True אם השדה או הביטוי מתחילים בטקסט שצוין, אחרת היא מחזירה את הערך False. |
TRIM |
הפונקציה מחזירה טקסט ללא רווחים בתחילת הטקסט או בסופו. |
דוגמאות לביטויים רגולריים
התאמה אם MyField מכיל תווי רווח:
REGEXP_CONTAINS(MyField, "\\s+")
מחולצת ספרייה ברמה העליונה בכתובת URL:
REGEXP_EXTRACT(URL, ^https://[^/]+/([^/]+)/)
לדוגמה, אם השדה URL הכיל את כתובת הדף הזה, הפונקציה הקודמת תחזיר looker-studio.
סיווג קמפיינים פרסומיים לפי שפה:
CASE
WHEN REGEXP_MATCH(Campaign 2, R".*\|\s*en\s*\|.*") then "English"
WHEN REGEXP_MATCH(Campaign 2, R".*\|\s*es\s*\|.*") then "Spanish"
ELSE "Other language"
END
לדוגמה, אם מפעילים את הביטוי הרגולרי הזה על המאפיין קמפיין בחשבון ההדגמה של Google Analytics, מקבלים את התוצאות הבאות:
| מסע פרסום | שפה |
|---|---|
| קמפיין מס' 1 | שפה אחרת |
| 1000549 | Google Analytics Demo | DR | apontes | NA | US | en | Hybrid | AW SEM | BKWS | ~ AW - Google Brand (US) | אנגלית |
| 1000549 | Google Analytics Demo | DR | apontes | NA | CA | es | Hybrid | AW SEM | BKWS | ~ AW - YouTube (CA) | ספרדית |
החלפת הסדר של קטעים במחרוזת:
REGEXP_REPLACE(Campaign, R'(.*):(.*)', R'\2 \1')
בדוגמה הקודמת, הקטעים מופרדים באמצעות נקודתיים (:).
מטא תווים
מטא תווים הם תווים שיש להם משמעות מיוחדת בביטוי רגולרי. אלה כמה מהמטא-תווים הנפוצים ביותר שאפשר להשתמש בהם. שימו לב: הדוגמאות האלה ייפתחו במרכז העזרה של Google Analytics, אבל המידע שמוצג שם רלוונטי גם ל-Data Studio.
תווים כלליים לחיפוש
| המשמעות של "על סמך תווים" | תיאור | דוגמה |
|---|---|---|
| . | תואם לתו בודד כלשהו (אות, מספר או סימן). | התאמות לביטוי "1. ": 10, 1A התאמות לביטוי "1.1": 111, 1A1 |
| ? | תואם לתו הקודם 0 פעמים או פעם אחת. | התאמות לביטוי "10?": 1, 10 דוגמאות להתאמה של תו 0 פעמים או פעם אחת |
| + | תואם לתו הקודם פעם אחת או יותר. | התאמות לביטוי "10+": 10, 100 דוגמאות להתאמה של תו אחד או יותר |
| * | תואם לתו הקודם 0 פעמים או יותר. | התאמות לביטוי "10* ": 1, 10, 100 דוגמאות להתאמה של תו 0 פעמים או יותר |
| | | יוצר התאמת OR. לא משתמשים בסוףביטוי. | התאמות לביטוי "1|10": 1, 10 דוגמאות ליצירת התאמה מסוג OR |
תווי עוגן
| המשמעות של "על סמך תווים" | תיאור | דוגמה |
|---|---|---|
| ^ | תואם לתווים הצמודים בתחילת מחרוזת. | התאמות לביטוי "^10": 10 , 10 0, 10 x הביטוי ^10 לא תואם ל-1 10 , 1 10 x דוגמאות להתאמת תווים אחרי תחילת מחרוזת |
| $ | תואם לתווים הצמודים בסוף מחרוזת. | התאמות לביטוי "10$": 1 10 , 10 10 הביטוי 10$ לא תואם ל- 10 0, 10 x דוגמאות להתאמת תווים לפני סוף המחרוזת |
קבוצות
| המשמעות של "על סמך תווים" | תיאור | דוגמה |
|---|---|---|
| ( ) | תואם לתווים שבסוגריים בסדר מדויק במקום כלשהו במחרוזת. משמש גם לקיבוץ ביטויים אחרים. | התאמות לביטוי "(10)": 10 , 10 1, 10 11 הביטוי ([0-9]|[a-z]) תואם לכל מספר או אות קטנה דוגמאות לקיבוץ תווים וביטויים |
| [ ] | התאמה לכל אחד מהתווים שבסוגריים. | part[12] תואם ל-part1 ול-part2 דוגמאות ליצירת קבוצת תווים להתאמה |
| - | יוצר טווח של תווים בתוך סוגריים מרובעים להתאמה במקום כלשהו במחרוזת. | הביטוי [0-9] תואם לכל מספר מ-0 עד 9 דוגמאות להתאמה לטווח של תווים |
Escape
| המשמעות של "על סמך תווים" | תיאור | דוגמה |
|---|---|---|
| \\ | מציין שיש לפרש את התו הצמוד באופן מילולי ולא כמטא-תו של ביטוי רגולרי. | \\ מציין שיש לפרש את הנקודה הצמודה כנקודה או כנקודה עשרונית ולא כתו כללי לחיפוש הביטוי 216\\.239\\.32\\.34 תואם לביטוי 216.239.32.34 דוגמאות לשימוש בתו בריחה |
סוגי דמויות
| מחלקה | תווים |
|---|---|
| \d | ספרות (≡ [0-9]) |
| \D | לא ספרות (≡ [^0-9]) |
| \s | רווח לבן (≡ [\t\n\f\r ]) |
| \S | לא רווח לבן (≡ [^\t\n\f\r ]) |
| \w | תווים במילה (≡ [0-9A-Za-z_]) |
| \W | לא תו במילה (≡ [^0-9A-Za-z_]) |
טיפים
שימוש בביטויים פשוטים
כדאי להשתמש בביטויים רגולריים פשוטים. ככל שהביטויים פחות מורכבים, כך קל יותר למשתמש אחר לפרש ולשנות אותם.
תלות באותיות רישיות
כברירת מחדל, ביטויים רגולריים הם תלויי אותיות רישיות (case-sensitive). כדי שההתאמה לא תהיה תלוית-אותיות רישיות, משתמשים בדגל (?i). לדוגמה, הביטוי הזה מחלץ את המחרוזות abc123 ו-ABC123:
REGEXP_EXTRACT(MyField, '(?i)(a.*)')
שימוש בתו בריחה (escape) לתו נטוי הפוך
אם רוצים לכתוב תנאי סינון שכולל תו לוכסן הפוך, צריך להוסיף תו לוכסן הפוך נוסף כדי לסמן בתו בריחה (escape) את תו הלוכסן ההפוך.
לדוגמה, הביטוי הבא בודק אם שדה מכיל את המחרוזת green\yellow:
REGEXP_CONTAINS(field_name, "green\\yellow")
אפשר גם להוסיף לפני הביטוי את הקידומת של מחרוזת ליטרלית גולמית, R. אם תעשו את זה, לא תצטרכו להשתמש בתו בריחה (escape) לתווים מיוחדים כמו לוכסן הפוך. אפשר לכתוב את הדוגמה הקודמת גם כך:
REGEXP_CONTAINS(field_name, R"green\yellow")