מהו ביטוי רגיל?
רגקס, או ביטויים קבועים, הם סימון התאמת תבניות מתכנתים השתמש בחיפוש אחר תבניות מסוימות בטקסט. ביטויים רגולריים יכולים לחפש כמעט כל דבר, תלוי איך אתה מבנה אותם; הם משמשים בכל מקום על ידי מתכנתים מכיוון שהם לא יסולאו בפז עבור עזרה למחשבים למיין נתונים במהירות ולסנן שטויות שעלולות לגרום לשגיאות אחרת.
ביטויים רגולריים נוטים להיראות מפחידים, במיוחד עבור אנשים שאינם מתכנתים. רק תסתכל על זה:
[a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 _-] + \. [a-zA-Z0-9 _.-] +
באופן מציאותי, זה בעצם לא כל כך רע; שתואם כתובות דוא"ל. כפי שתראו, ניתן לפרק ביטויים לדמויות בודדות, שכולן מספרות לתוכנית מה לחפש.
ביטויים רגולריים הם כמעט אוניברסליים. אותו גנרל תחביר חל בכל השפות עם וריאציות קלות רק פה ושם. מדריך זה מכיל דוגמאות מ- Python ו- JavaScript, כמו גם מ- regex ישן רגיל. אם אתה עובד עם שפה אחרת, אל תדאג. כמעט הכל יחול גם על שפת בחירתך.
יסודות רגקס
מבחינה טכנית, אין הרבה דברים שלא יכולים להיחשב לביטויים רגילים, מכיוון שמחרוזות טקסט מילוליות הן ממש פשוטות. אם היית משתמש ב- 'abcde' כביטוי רגיל, שפת התכנות תחפש את המחרוזת המדויקת.
דמות ההתאמה הדינמית הראשונה שהסתכלה עליה היא ה- '.' אופי. בהקשר זה, תו הנקודה הוא תו כללי. אם אתה מחפש איתו, התוכנית שלך תחזיר כל דמות שהיא תמצא כמתאימה.
אז מה אם אתה רוצה לחפש נקודה מילולית? גם זה לא קשה. כשרוצים להשתמש בתקופה מילולית, הוסיפו קו נטוי אחורי לפניו, כך: '\.'
תווים נסיגתיים
הנטייה האחורית משחקת כאן הרבה יותר תפקידים. רוב הדמויות הגדולות של regex כוללות קו נטוי אחורי.
התבונן בכמה דוגמאות:
- \ d: ספרות בין 0 ל -9
- \ w: אותיות "ספרות מילים", ספרות וקו תחתון
- \ s: תווים לבנים, כולל כרטיסיות, שורות חדשות ומרווחים רגילים
אם אתה משתמש באות הגדולה במקום עם כל אלה, תקבל את ההפך. לדוגמה, '\ D' נותן לך הכל מלבד ספרות.
שיעורים
ה תווים נטויים לאחור הם טובים, אבל הם עדיין נוקשים. באופן כללי, תרצה להתאים בין אותיות, מספרים או כמה תווים מיוחדים.
מקם את התווים שאתה רוצה להיות מותאמים בתוך סוגריים מרובעים '[]', והתוכנית שלך תתאים לכל אחת מהן. זה נקרא מחלקת regex.
[abcd1234]
הדוגמה לעיל עדיין אינה יעילה. במקום זאת, אתה יכול להשתמש במקף כדי לציין טווח; לדוגמא, כל האותיות הקטנות:
[a-z]
אתה יכול גם לרשום טווחים. הביטוי שלהלן תואם את כל האותיות והספרות:
[a-zA-Z0-9]
אם אתה מתכוון לכלול את מקף הדמות במערכת הדמויות שלך, דבק אותה בסוף כדי למנוע את הערכתה. זה עובד גם עם תווים מיוחדים אחרים.
[a-zA-Z0-9 _. + -]
כמו בדמויות הנטיות, גם כאן תוכלו לקבל את התוצאה ההפוכה. הצב '^' בתחילת השיעור שלך כדי לא לכלול אותם מהתוצאות שלך. זה לא יכלול ספרות וכמה תווים מיוחדים מהתוצאות:
[^0-9_+.-]
קבוצות
קבוצות משתמשות בסט סוגריים כדי לחלק את הביטוי שלך. הם מקבצים נתונים ומאפשרים לתוכנית שלך למקד ולהשתמש בהם. כאשר תוכנית מפשיטה את ' http://' מכתובת אינטרנט, היא משתמשת בקבוצות regex בכדי להשיג זאת. ה- regex מאפשר לו לכוון לקריטריונים מסוימים, והקבוצות מאפשרות לו להפריד בין חלקים.
קבוצות מאפשרות לך גם לבחור בין תבנית כזו או אחרת. הם מעסיקים יחיד '|' לפעול כ"או "בביטוי. הביטוי שלהלן יתאים לכל אחד מאלה: .com, .org, .net, .edu או .gov.
\. (com | org | net | edu | gov)
מכמתים
מכימות הם בדיוק איך שהם נשמעים. הם מספרים לביטוי את כמות הדמות שאתה מחפש. אלה הם הכמתים הזמינים:
- *: אפס ומעלה
- +: אחד או יותר
- ?: אפס או אחד
- {3}: הסכום בסוגריים
הצב את אחד מכמתים אלה בסוף התו או המחלקה שברצונך לציין את כמותם. דוגמה זו מחפשת מספרי טלפון רגילים עם שבע ספרות:
\ d {3} [. * -] \ d {3} [. * -] \ d {4}
עוגנים וגבולות
ביטויים רגולריים מאפשרים לך לחפש תבניות על סמך מיקומן בתוך מחרוזת טקסט או סביב מילה.
אלה האפשרויות העיקריות שלך:
- ^: ההתחלה של מחרוזת
- $: סוף המחרוזת
- \ b: גבול מילים (התחלה או סוף של מילה)
אם אתה רוצה למצוא רק מחרוזות שמתחילות באות, אתה יכול לנסות:
^ [a-zA-Z]
אמור שאתה רוצה למצוא רק את המילה "זה", ולא מילים המכילות את האותיות I ו- T; שם היית משתמש בגבולות מילים.
\ b (i | I) t \ b
מחשבות אחרונות
ביטויים רגולריים יכולים לחסוך לך המון כאבי ראש בעת התכנות. תאר לעצמך שאתה מנסה לכתוב היגיון כדי להשיג אחת מהדוגמאות במאמר זה. זה יהיה בלגן נורא. ברגע שתרגיע איתם, כנראה שתמצא את עצמך באמת נהנה מהכוח והגמישות של regex.