תחביר של ביטויים רגולריים

כדי ליצור ביטוי רגולרי, צריך להשתמש בתחביר ספציפי – כלומר, בתווים מיוחדים ובכללי בנייה. לדוגמה, הביטוי הרגולרי הפשוט הבא תואם לכל מספר טלפון בן 10 ספרות, בדפוס nnn-nnn-nnnn:

\d{3}-\d{3}-\d{4}

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

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

^abc

תופס כל הודעת אימייל ששורת הנושא שלה מתחילה באותיות abc
$ ‫(dollar) מתאים לסוף השורה או למחרוזת הטקסט שהביטוי הרגולרי מחפש. לדוגמה, כלל תוכן עם מיקום של שורת הנושא והביטוי הרגולרי הבא:

xyz$

תופס כל הודעת אימייל ששורת הנושא שלה מסתיימת באותיות xyz
תווים מטא
. ‫(dot) מתאים לכל תו יחיד, למעט שורה חדשה.
| (קו אנכי) מציין חלופה, כלומר 'או'. לדוגמה:

cat|dog מתאים למילה cat או dog
\ מציין שהתו הבא הוא תו מילולי ולא תו מיוחד. לדוגמה:

‎\. מתאים לנקודה מילולית, ולא לכל תו (תו נקודה)
Character Classes
[...] התאמה לכל תו מתוך קבוצת תווים. מפרידים בין התו הראשון לבין התו האחרון במערכת באמצעות מקף. לדוגמה:

‫[123] תואם לספרה 1, 2 או 3

‫[a-f] תואם לכל אות מ-a עד f

הערה: הביטויים הרגולריים במדיניות בנושא תאימות תוכן הם תלויי-רישיות (case sensitive).
[^...] התאמה לכל תו שלא נמצא בקבוצת התווים. לדוגמה:

‫[^a-f]תואם לכל תו שהוא לא אות מ-a עד f

הערה: הביטויים הרגולריים במדיניות בנושא תאימות תוכן הם תלויי-רישיות (case sensitive).
[:alnum:] התאמה לתווים אלפאנומריים (אותיות או ספרות):

a-z, ‏ A-Z או 0-9

הערה: כשמשתמשים במחלקת התווים הזו בביטוי רגולרי, צריך להקיף אותה בעוד קבוצה של סוגריים מרובעים, לדוגמה: [[:alnum:]].
[:alpha:] תואם לתווים אלפביתיים (אותיות):

a-z או A-Z

הערה: כשמשתמשים במחלקת התווים הזו בביטוי רגולרי, צריך להקיף אותה בעוד זוג סוגריים מרובעים, לדוגמה: [[:alpha:]].
[:digit:] תואם לספרות:

0-9

הערה: כשמשתמשים במחלקת התווים הזו בביטוי רגולרי, צריך להקיף אותה בעוד זוג סוגריים מרובעים, לדוגמה: [[:digit:]].
[:graph:] תואם רק לתווים גלויים – כלומר, כל התווים חוץ מרווחים, תווים לשליטה וכו'.

הערה: כשמשתמשים במחלקת התווים הזו בביטוי רגולרי, צריך להקיף אותה בעוד קבוצה של סוגריים מרובעים, לדוגמה: [[:graph:]].
[:punct:] תואם לתווי פיסוק ולסמלים:

! " # $ % & ' ( ) * + , \ -. / : ; < = > ? @ [ ] ^ _ ` { | }

הערה: כשמשתמשים במחלקת התווים הזו בביטוי רגולרי, צריך להקיף אותה בעוד זוג סוגריים מרובעים, לדוגמה: [[:punct:]].
[:print:] תואם לתווים ולרווחים שניתן לראות.

הערה: כשמשתמשים במחלקת התווים הזו בביטוי רגולרי, צריך להוסיף עוד זוג סוגריים מרובעים מסביב, למשל: [[:print:]].
[:space:] תואם לכל תווי הרווח הלבן, כולל רווחים, טאבים ומעברי שורה.

הערה: כשמשתמשים במחלקת התווים הזו בביטוי רגולרי, צריך להקיף אותה בעוד קבוצה של סוגריים מרובעים, לדוגמה: [[:space:]].
[:word:] תואם לכל תו של מילה – כלומר, כל אות, ספרה או קו תחתון:

a-z,‏ A-Z,‏ 0-9 או _

הערה: כשמשתמשים במחלקת התווים הזו בביטוי רגולרי, צריך להקיף אותה בעוד קבוצה של סוגריים מרובעים, לדוגמה: [[:word:]].
Shorthand Character Classes
\w תואם לכל תו של מילה – כלומר, כל אות, ספרה או קו תחתון:

a-z,‏ A-Z,‏ 0-9 או _

שווה ל-[:word:]
\W תואם לכל תו שהוא לא חלק ממילה – כלומר, כל תו שהוא לא אות, ספרה או קו תחתון.

שווה ל-‎[^[:word:]]
‎\s מתאים לכל תו שיוצר רווח. לדוגמה, אפשר להשתמש בתו הזה כדי לציין רווח בין מילים בביטוי:

stockstips תואם לביטוי stock tips

שווה ל-[:space:]
\S מתאים לכל תו שאינו רווח.

שווה ל-‎[[:space:]^]
\d תואם לכל ספרה מ-0 עד 9.

שווה ל-[:digit:]
\D מתאים לכל תו שהוא לא ספרה מ-0 עד 9.

שווה ל-‎[^[:digit:]]
קבוצה
(...) מקבצים חלקים של ביטוי. אפשר להשתמש בקיבוץ כדי להחיל כמותן על קבוצה או כדי להתאים מחלקת תווים לפני או אחרי קבוצה.
Quantifiers
{n} התאמה לביטוי הקודם בדיוק n פעמים. לדוגמה:

‫[a-c]{2} מתאים לכל אות מ-a עד c רק אם מופיעות שתי אותיות ברצף. לכן, הביטוי יתאים ל-ab ול-bc אבל לא ל-abc או ל-aabbc.
{n,m} התאמה לביטוי הקודם לפחות n פעמים ולכל היותר m פעמים. לדוגמה:

‫[a-c]{2,4} תואם לכל אות מ-a עד c רק אם האותיות מופיעות ברצף לפחות פעמיים ולכל היותר 4 פעמים. לכן, הביטוי יתאים ל-ab ול-abc אבל לא ל-aabbc.
? מציין שהתו או הביטוי הקודמים יכולים להיות תואמים 0 פעמים או פעם אחת. שווה לטווח {0,1}. לדוגמה, הביטוי הרגולרי הבא:

colou?r

תואם ל-colour או ל-color, כי התו ? הופך את האות u לאופציונלית.