עצירה מלאה `.` היר דוגמא פשוטה לשימוש בתו-מטא. תו-המטא `.` מתאים לכל תו בודד. הוא לא יתאים
לתו return (\r) או לתו newline (\n). למשל, הביטוי הרגולרי `.ar` פירושו: כל תו, שאחריו האות `a`, ואחריה האות `r`.
<predir="ltr">
".ar" => The <ahref="#learn-regex"><strong>car</strong></a><ahref="#learn-regex"><strong>par</strong></a>ked in the <ahref="#learn-regex"><strong>gar</strong></a>age.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/xc9GkU/1)
## 2.2 מערכות תוים
מערכות תוים נקראים גם מחלקות תוים. סוגריים מרובעים משמשים לציון מערכות תוים.
השתמש במקף בתוך ערכת התוים בכדי לציין את טווח התוים. סדר טווח התוים לא משנה.
לדוגמא, הביטוי הרגולרי <spandir='ltr'>`[Tt]he`</span> פירושו: אות גדולה
`T` או אות קטנה `t`, שאחריה מופיעה האות `h`, ואחריה מופיעה האות `e`.
<predir="ltr">
"[Tt]he" => <ahref="#learn-regex"><strong>The</strong></a> car parked in <ahref="#learn-regex"><strong>the</strong></a> garage.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/2ITLQ4/1)
נקודה בתוך ערכת התוים בשונה מבחוץ תחשב כתו נקודה. הביטוי הרגולרי
<spandir='ltr'>`ar[.]`</span> פירושו: תו האות הקטנה `a`, שאחריו האות `r`,
ואחריה התו נקודה `.`.
<predir="ltr">
"ar[.]" => A garage is a good place to park a c<ahref="#learn-regex"><strong>ar.</strong></a>
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/wL3xtE/1)
### 2.2.1 מערכות תוים שליליות
באופן כללי, הסימן "קרט"(גג) מייצג את תחילתה של מחרוזת, אך במידה והוא מוקלד לאחר סוגר מרובע פותח,
הוא שולל את מערכת ההתוים שיהיו תחת אותם סוגרים. לדוגמא, הביטוי הרגולרי <spandir='ltr'>`[^c]ar`</span> פירושו: כל תו חוץ מ-`c`,
שלאחריו יופיע התו `a`, שאחריו יופיע התו `r`.
<predir="ltr">
"[^c]ar" => The car <ahref="#learn-regex"><strong>par</strong></a>ked in the <ahref="#learn-regex"><strong>gar</strong></a>age.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/nNNlq3/1)
## 2.3 חזרות
תווי-המטא `+`, `*` או `?` משמשים לציון כמה פעמים דפוסי משני יכולים להתרחש.
תווי-מטא אלו פועלים אחרת במצבים שונים.
### 2.3.1 הכוכבית
הסימן - `*` תואם אפס או יותר חזרות של המתאם הקודם. הביטוי הרגולרי <spandir='ltr'>`a*`</span> פירושו:
אפס או יותר חזרות של התו הקודם- `a`. אבל אם הכוכבית תופיע לאחר מערכת או מערך תוים אז
הוא ימצא את החזרות של מערכת התוים כולה. לדוגמא, הביטוי הרגולרי <spandir='ltr'>`[a-z]*`</span> פירושו:
`T` גדולה, ולאחריה אות קטנה `h`, ולאחריה תופיע האות - `e`.
<predir="ltr">
"[T]he" => <ahref="#learn-regex"><strong>The</strong></a> car is parked in the garage.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/cIg9zm/1)
<predir="ltr">
"[T]?he" => <ahref="#learn-regex"><strong>The</strong></a> car is parked in t<ahref="#learn-regex"><strong>he</strong></a> garage.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/kPpO2x/1)
## 2.4 סוגרים מסולסלים
בביטויים רגולרים, סוגרים מסולסלים (נקראים גם מכמתים) משמשים לציון
מספר הפעמים שניתן לחזור על תו או קבוצת תוים מסויימת. לדוגמא, הביטור הרגולרי
<spandir='ltr'>`[0-9]{2,3}`</span> פירושו: התאם לפחות שתי ספרות, אבל לא יותר משלוש, בטווח שבין 0 ל-9
<predir="ltr">
"[0-9]{2,3}" => The number was 9.<ahref="#learn-regex"><strong>999</strong></a>7 but we rounded it off to <ahref="#learn-regex"><strong>10</strong></a>.0.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/juM86s/1)
אנחנו יכולים לוותר על המספר השני בסוגרים המסולסלים. לדוגמא, בביטוי הרגולרי
<spandir='ltr'>`[0-9]{2,}`</span> פירושו: התאמת שתי ספרות או יותר. בנוסף אם
נוריד את הפסיק, לדוגמא בביטוי הרגולרי <spandir='ltr'>`[0-9]{3}`</span> פירושו:
התאם בדיוק שלוש ספרות.
<predir="ltr">
"[0-9]{2,}" => The number was 9.<ahref="#learn-regex"><strong>9997</strong></a> but we rounded it off to <ahref="#learn-regex"><strong>10</strong></a>.0.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/Gdy4w5/1)
<predir="ltr">
"[0-9]{3}" => The number was 9.<ahref="#learn-regex"><strong>999</strong></a>7 but we rounded it off to 10.0.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/Sivu30/1)
## 2.5 קבוצות לכידה
קבוצה מלכדת היא קבוצה של תת-תבניות שנכתבות בתוך סוגריים רגילים <spandir='ltr'>`(...)`</span>.
כפי שצויין קודם לכן, בביטוי רגולרי, אם נניח מכמת אחרי תו הוא יחזור על התו הקודם.
אבל אם נניח מכמת אחרי קבוצה מלכדת אז המכמת יתיחס לכל הקבוצה המלכדת. לדוגמא, הביטוי הרגולרי
<spandir='ltr'>`(ab)*`</span> תואם אפס או יותר חזרות של המחרוזת "ab". אנחנו יכולים גם להשתמש
בתו-מטא `|` המשמש לבצע את הפעולה 'OR'(או) בתוך קבוצה מלכדת.
לדוגמא, הביטוי הרגולרי <spandir='ltr'>`(c|g|p)ar`</span> פירושו: אות קטנה `c`,
`g` או `p`, שאחריהן תופיע האות `a`, ואחריה האות `r`.
<predir="ltr">
"(c|g|p)ar" => The <ahref="#learn-regex"><strong>car</strong></a> is <ahref="#learn-regex"><strong>par</strong></a>ked in the <ahref="#learn-regex"><strong>gar</strong></a>age.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/tUxrBG/1)
יש לשים לב כי קבוצות מלכדות לא רק תואמות, אלא גם תופסות את התוים לשימוש בשפת האם.
שפת האם יכולה להיות Python או JavaScript או כמעט כל שפה שמיישמת ביטויים רגולרים
בבגדרת פונקציה.
### 2.5.1 קבוצות שאינן לוכדות
קבוצה שאינה מלכדת זוהי קבוצת לוכדת התואמת את התוים אבל לא תופסת את הקבוצה.
קבוצה שאינה מלכדת מסומנת על ידי התו `?` ואחריו `:` בתוך הסוגריים הרגילים. <spandir='ltr'>`(...)`</span>.
"(?:c|g|p)ar" => The <ahref="#learn-regex"><strong>car</strong></a> is <ahref="#learn-regex"><strong>par</strong></a>ked in the <ahref="#learn-regex"><strong>gar</strong></a>age.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/Rm7Me8/1)
קבוצות שאינן מלכדות יכולות להיות שימושיות כאשר יש צורך בפונקציונליות של חיפוש והחלפה
או כאשר מעורבת גם קבוצת לכידה בכדי לשמור על הסקירה כאשר מפיקים כל סוג אחר של פלט.
ניתן לראות גם ב [4. Lookaround](#4-lookaround).
## 2.6 חלופה
בביטוי רגולרי, הקו ניצב `|` משמש בכדי להגדיר חלופה. חלופה היא כמו הצהרת OR (או)
בין ביטויים שונים. כעט את.ה עלול לחשוב שמערכות התווים והתו המשמש להגדרת חלופה יעבדו באותה הדרך.
אך ההבדל העיקרי בין מערכת תווים לבין חלופה הוא שמערכת תווים פועלת ברמת התו והחלופה
עובדת ברמת הביטוי. לדוגמא, הביטוי הרגולרי <spandir='ltr'>`(T|t)he|car`</span> פירושו: או (אות גדולה `T` או אות קטנה
`t`, שלאחריהן אות קטנה `h`, שאחריה אות קטנה `e`) או (אות קטנה `c`, שאחריה תופיע האות `a`,
ולאחריה תופיע האות `r`). יש לשים לב שהכללתי את הסוגריים לשם ההבהרה,
בכדי להראות שאפשר להתמודד עם כל ביטוי בסוגריים והוא יתאים.
<predir="ltr">
"(T|t)he|car" => <ahref="#learn-regex"><strong>The</strong></a><ahref="#learn-regex"><strong>car</strong></a> is parked in <ahref="#learn-regex"><strong>the</strong></a> garage.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/fBXyX0/1)
## 2.7 התעלמות מתווים מיוחדים
לוכסן שמאלי `\` משמש בביטוי רגולרי בכדי להתעלם מהתו הבא. זה מאפשר לנו לכלול תוים שמורים כמו
יש להוסיף אותו מראש עם `\` לפניו. לדוגמא, הביטוי הרגולרי `.` משמש בכדי להתאים כל תו חוץ משורה חדשה.
כעט בכדי לבצע התאמה עם הסימן `.` במחרוזת קלט, יהיה צורך בהוספת הלוכסן השמאלי. למשל בביטוי הרגולרי
`(f|c|m)at\.?` פירושו: אות קטנה `f`, `c` או `m`, שאחריהן תופיע האות הקטנה
`a`, ואחריה תופיע האות הקטנה `t`, ולבסוף יופיע באופן אופציונלי התו - `.`.
<predir="ltr">
"(f|c|m)at\.?" => The <ahref="#learn-regex"><strong>fat</strong></a><ahref="#learn-regex"><strong>cat</strong></a> sat on the <ahref="#learn-regex"><strong>mat.</strong></a>
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/DOc5Nu/1)
## 2.8 עוגנים
בביטויים רגולרים, אנחנו משתמשים בעוגנים בכדי לבדוק אם סימן ההתאמה הוא סימן התחלה או
סימן סיום של מחרוזת הקלט. ישנם שני סוגי עוגנים:
הסוג הראשון הוא ה"קרט"(גג) `^` שבודק אם תו תואם הוא התו הראשון של הקלט והסוג השני הוא סימן הדולר
`$` אשר בודק אם תו תואם הוא התו האחרון שבקלט
### 2.8.1 ה-"קרט"
הסימן "קרט" `^` משמש לבדיקה אם תו תואם הוא התו הראשון של מחרוזת הקלט.
אם ניישם את הביטור הרגולרי הבא <spandir='ltr'>`^a`</span> (כלומר 'a' חייב להיות התו ההתחלתי)
המחרוזת `abc`, תתאים לדרישות `a`.
אך אם ניישם את הביטוי הרגולרי <spandir='ltr'>`^b`</span> על במחרוזת למעלה, היא לא תמצא אף התאמה.
בגלל שבמחרוזת `abc`, ה-"b" אינו תו התחלתי. בואו נסתכל על ביטוי רגולרי אחר
<spandir='ltr'>`^(T|t)he`</span> שפירושו: אות גדולה `T` או אות קטנה `t` חייבת להיות התו הראשון של המחרוזת,
ואחריה האות הקטנה `h`, ולאחריה האות הקטנה `e`.
<predir="ltr">
"(T|t)he" => <ahref="#learn-regex"><strong>The</strong></a> car is parked in <ahref="#learn-regex"><strong>the</strong></a> garage.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/5ljjgB/1)
<predir="ltr">
"^(T|t)he" => <ahref="#learn-regex"><strong>The</strong></a> car is parked in the garage.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/jXrKne/1)
### 2.8.2 סימן הדולר
סימן הדולר `$` משמש בכדי לבדוק אם התו התואם הוא התו האחרון במחרוזת. לדוגמא,
הביטוי הרגולרי <spandir='ltr'>`(at\.)$`</span> פירושו: האות הקטנה `a`, שאחריה תיהיה האות הקטנה `t`, ואחריה התו נקודה `.`
וכל ההתאמה חייבת לביות בסופה של המחרוזת.
<predir="ltr">
"(at\.)" => The fat c<ahref="#learn-regex"><strong>at.</strong></a> s<ahref="#learn-regex"><strong>at.</strong></a> on the m<ahref="#learn-regex"><strong>at.</strong></a>
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/y4Au4D/1)
<predir="ltr">
"(at\.)$" => The fat cat. sat. on the m<ahref="#learn-regex"><strong>at.</strong></a>
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/t0AkOd/1)
## 3. קיצורי מערכות תווים
ישנם מספר קיצורים נוחים למערכות תווים נפוצות / ביטויים רגולרים:
הביטוי הרגולרי <spandir='ltr'>`(?<=(T|t)he\s)(fat|mat)`</span> פירושו: התאם
את כל המילים `fat` או `mat` ממחרוזת קלט שנמצאות לפני המילים `The` או `the` ויש רווח
שמפריד בינהן.
<predir="ltr">
"(?<=(T|t)he\s)(fat|mat)" => The <ahref="#learn-regex"><strong>fat</strong></a> cat sat on the <ahref="#learn-regex"><strong>mat</strong></a>.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/avH165/1)
### 4.4 מבט אחורה שלילי
משתמשים במבט אחורה שלילי בכדי לקבל את כל ההתאמות שלפניהן אין תבנית ספציפית מסויימת.
מבטים אחורה שליליים יכתבו כך: <spandir='ltr'>`(?<!...)`</span>. לדוגמא, הביטוי הרגולרי
<spandir='ltr'>`(?<!(T|t)he\s)(cat)`</span> פירושו: התאם את כל המילים `cat`
ממחרוזת קלט שלא נמצאות אחרי המילים `The` or `the` כאשר רווח מפריד בינהן.
<predir="ltr">
"(?<!(T|t)he\s)(cat)" => The cat sat on <ahref="#learn-regex"><strong>cat</strong></a>.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/8Efx5G/1)
## 5. דגלים
דגלים נקראים גם משנים בגלל שהם משנים את הפלט של הביטוי הרגולרי.
ניתן להשתמש בדגלים הללו בכל סדר או שילוב והם חלק בלתי נפרד
מהביטוי הרולרי (RegExp).
|דגל|תיאור|
|:----:|----|
|i|חוסר רגישות לאותיות: ההתאמה לא תהיה רגישה לאותיות קטנות או גדולות.|
|g|חיפוש גלובלי: התאם את כל ההאמות שהופיעו, לא רק את הראשונה.|
|m|רב-שורות: תווי-המטא העוגנים (`$` או `^`) עובדים על כל שורה.|
### 5.1 חוסר רגישות לאותיות
המשנה `i` משמש בכדי לבצע התאמות חסרות רגישות לאותיות קטנות או גדולות.
לדוגמא, בביטוי הרגולרי <spandir='ltr'>`/The/gi`</span> פירושו: אות גדולה `T`, ואחריה אות קטנה
`h`, ואחריה אות קטנה `e`. ובסוף הביטוי הרגולרי יש את הדגל `i` שאומר למנוע הביטוי הרגולרי
להתעלם מהבדלי אותיות גדולות או קטנות. וכפי שאת.ה יכול לראות,
סיפקנו גם דגל `g` בגדלל שאנחנו רוצים לחפש את התבנית בכל מחרוזת הקלט.
<predir="ltr">
"The" => <ahref="#learn-regex"><strong>The</strong></a> fat cat sat on the mat.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/dpQyf9/1)
<predir="ltr">
"/The/gi" => <ahref="#learn-regex"><strong>The</strong></a> fat cat sat on <ahref="#learn-regex"><strong>the</strong></a> mat.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/ahfiuh/1)
### 5.2 חיפוש גלובלי
המשנה `g` משמש בכדי לבצע התאמות גלובליות (מוצא את כל ההתאמות במקום לעצור בהתאמה הראשונה).
לדוגמא, בביטוי הרגולרי <spandir='ltr'>`/.(at)/g`</span> פירושו: כל תו חות משורה חדשה, שאחריו תיהיה האות הקטנה `a`,
ואחריה תיהיה האות הקטנה `t`. בגלל שסיפקנו את הדגל `g` בסופו של הביטוי הרגולרי,
הוא עכשיו ימצא את כל ההתאמות במחרוזת הקלט, לא רק את ההתאמה הראשונה (שזו התנהגות ברירת המחדל).
<predir="ltr">
"/.(at)/" => The <ahref="#learn-regex"><strong>fat</strong></a> cat sat on the mat.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/jnk6gM/1)
<predir="ltr">
"/.(at)/g" => The <ahref="#learn-regex"><strong>fat</strong></a><ahref="#learn-regex"><strong>cat</strong></a><ahref="#learn-regex"><strong>sat</strong></a> on the <ahref="#learn-regex"><strong>mat</strong></a>.
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/dO1nef/1)
### 5.3 רב-שורות
המשנה `m` משמש בכדי לבצע התאמות במספר רב של שורות. כפי שדנו על כך קודם לכן,
העוגנים `(^, $)` משמשים לבדיקה אם תבנית היא בהתחלה או בסופו של קלט.
אבל אם אנחנו רוצים שהעוגנים הללו יעבדו על כל שורה, אנחנו נשתמש בדגל `m`. לדוגמא,
בביטוי הרגולרי <spandir='ltr'>`/at(.)?$/gm`</span> פירושו: אות קטנה
`a`, שלאחריה האות הקטנה `t` וכאופציה, כל תו שאינו שורה חדשה. ובגלל הדגל `m`,
המנוע של הביטוי הרגולרי יתאים את התבנית בכל סוף שורה במחרוזת.
<predir="ltr">
"/.at(.)?$/" => The fat
cat sat
on the <ahref="#learn-regex"><strong>mat.</strong></a>
</pre>
[בדוק.י את הביטוי הרגולרי](https://regex101.com/r/hoGMkP/1)
<predir="ltr">
"/.at(.)?$/gm" => The <ahref="#learn-regex"><strong>fat</strong></a>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.