חיפוש

.* מדריך Regex מקיף

ביטויים רגולריים - חיפוש והתאמת תבניות

יסודות Regex

💡 מה זה Regex?
Regex (Regular Expressions) הם ביטויים רגולריים - שפה לחיפוש והתאמת תבניות בטקסט. זה כמו "חיפוש מתקדם על סטרואידים"! משמש בכל שפות התכנות, עורכי טקסט, וכלי שורת פקודה.

תווים בסיסיים

התאמה מדויקת:

hello
מתאים בדיוק למילה "hello"
דוגמה:
hello world, hello there

נקודה (.) - כל תו:

h.llo
. = כל תו בודד (חוץ מ-newline)
מתאים ל:
hello, hallo, hxllo

תווים מיוחדים שצריך escape:

\. \* \+ \? \[ \] \( \) \{ \} \^ \$ \| \\
להתאים לתו מיוחד, הוסף \ לפניו

תווים מיוחדים וקבוצות

Character Classes

\d - ספרה (0-9):

\d
מתאים: 0, 1, 2...9

\D - לא ספרה:

\D

\w - תו מילה (אות, ספרה, _):

\w
שווה ל-[a-zA-Z0-9_]

\W - לא תו מילה:

\W

\s - רווח לבן (space, tab, newline):

\s

\S - לא רווח לבן:

\S

טווחים ב-[]

טווח אותיות:

[a-z]
כל אות קטנה מ-a עד z

טווח ספרות:

[0-9]

מספר אפשרויות:

[aeiou]
תנועות בלבד

שלילה (NOT):

[^0-9]
כל דבר חוץ מספרות

שילוב טווחים:

[a-zA-Z0-9]
אותיות (גדולות וקטנות) וספרות

כמתים (Quantifiers)

כמויות

* - אפס או יותר:

a*
מתאים: "", a, aa, aaa...

+ - אחד או יותר:

a+
מתאים: a, aa, aaa... (לא "")

? - אפס או אחד (אופציונלי):

colou?r
מתאים: color, colour

{n} - בדיוק n פעמים:

\d{3}
מתאים: 123, 456 (בדיוק 3 ספרות)

{n,} - n או יותר:

\d{2,}
לפחות 2 ספרות

{n,m} - בין n ל-m:

\d{2,4}
מתאים: 12, 123, 1234

Greedy vs Lazy

Greedy (ברירת מחדל) - מתאים כמה שיותר:

<.+>
בטקסט: <div>text</div>
מתאים: <div>text</div> (הכל!)

Lazy (?) - מתאים כמה שפחות:

<.+?>
בטקסט: <div>text</div>
מתאים: <div> ו-</div> (בנפרד)

קבוצות (Groups)

Capturing Groups

קבוצה בסיסית ():

(abc)+
מתאים: abc, abcabc, abcabcabc

OR (|) בתוך קבוצה:

(cat|dog)
מתאים: cat או dog

התייחסות חוזרת (Backreference):

(\w+)\s\1
\1 = התאמה למה שנתפס בקבוצה הראשונה
מתאים: hello hello, test test

Non-capturing group (?:):

(?:abc)+
מקבץ אבל לא שומר לזיכרון

עוגנים (Anchors)

התחלה וסוף

^ - התחלת שורה:

^hello
מתאים רק אם "hello" בהתחלת השורה

$ - סוף שורה:

world$
מתאים רק אם "world" בסוף השורה

שורה שלמה:

^hello world$
השורה חייבת להכיל רק "hello world"

\b - גבול מילה:

\bcat\b
מתאים: "the cat sat"
לא מתאים: "category" (cat בתוך מילה)

\B - לא גבול מילה:

\Bcat\B
מתאים: "education"
לא מתאים: "cat" (מילה שלמה)

Lookahead ו-Lookbehind

Lookahead

Positive Lookahead (?=):

\d+(?= dollars)
מספר שאחריו " dollars"
בטקסט: "I have 100 dollars and 50 euros"
מתאים רק ל-100

Negative Lookahead (?!):

\d+(?! dollars)
מספר שאחריו לא " dollars"

Lookbehind

Positive Lookbehind (?<=):

(?<=\$)\d+
מספר שלפניו $
בטקסט: "$100 and €50"
מתאים רק ל-100

Negative Lookbehind (?<!):

(?<!\$)\d+
מספר שלפניו לא $

Flags (דגלים)

דגלים נפוצים

i - Case insensitive:

/hello/i
מתאים: hello, Hello, HELLO

g - Global (כל ההתאמות):

/cat/g
מוצא את כל המופעים, לא רק הראשון

m - Multiline:

/^hello/m
^ ו-$ עובדים על כל שורה בנפרד

s - Dotall:

/./s
. מתאים גם ל-newline

שילוב דגלים:

/hello/gi
Global + Case insensitive

דוגמאות נפוצות

אימייל

אימייל בסיסי:

\w+@\w+\.\w+

אימייל מתקדם יותר:

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
מתאים: user@example.com, test.user+tag@domain.co.il

טלפון

טלפון ישראלי:

0\d{1,2}-?\d{7}
מתאים: 050-1234567, 0501234567, 02-1234567

טלפון בינלאומי:

\+?\d{1,3}[-.\s]?\(?\d{1,4}\)?[-.\s]?\d{1,4}[-.\s]?\d{1,9}

URL

URL בסיסי:

https?://[\w.-]+\.\w+

URL מלא:

https?://(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&/=]*)

תאריך ושעה

תאריך (DD/MM/YYYY):

\d{2}/\d{2}/\d{4}
מתאים: 25/12/2024

תאריך (YYYY-MM-DD):

\d{4}-\d{2}-\d{2}

שעה (24 שעות):

([01]\d|2[0-3]):[0-5]\d
מתאים: 09:30, 23:59

מספרים

מספר שלם:

-?\d+

מספר עשרוני:

-?\d+\.?\d*
מתאים: 42, 3.14, -17.5

מספר עם פסיקים:

\d{1,3}(,\d{3})*
מתאים: 1,000, 1,234,567

סיסמה

סיסמה חזקה (8+ תווים, אות גדולה, קטנה, ספרה):

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
משתמש ב-lookahead לבדיקת תנאים

HTML/XML

תג HTML:

<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)

הסרת תגי HTML:

<[^>]+>

כתובת IP

IPv4:

\b(?:\d{1,3}\.){3}\d{1,3}\b
מתאים: 192.168.1.1, 8.8.8.8

IPv4 מדויק (0-255):

\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

תרגילים מעשיים

תרגיל 1: חילוץ שמות

חלץ שמות פרטיים ומשפחה מטקסט:

\b[A-Z][a-z]+\s[A-Z][a-z]+\b
טקסט: "Hello, I'm John Smith and this is Jane Doe."

תרגיל 2: ניקוי רווחים

מצא רווחים מרובים:

\s{2,}
להחלפה ברווח בודד

תרגיל 3: מספרי כרטיס אשראי

זיהוי מספר כרטיס (16 ספרות):

\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
מתאים: 1234 5678 9012 3456, 1234-5678-9012-3456

תרגיל 4: Hashtags

חילוץ hashtags:

#\w+
טקסט: "Love #coding and #programming!"

תרגיל 5: קוד צבע Hex

קוד צבע HEX:

#[0-9A-Fa-f]{6}\b
מתאים: #FF5733, #00ff00
💡 טיפים לתרגול
• השתמש באתרים כמו regex101.com לתרגול
• התחל פשוט והוסף מורכבות בהדרגה
• בדוק את ה-regex על מקרי קצה
• זכור: Regex לא תמיד הפתרון הטוב ביותר!