../images/Emo124.gif ה-Namespace השבועי
מרחב השמות System.Text.RegularExpressions כולל את המימוש ל-RegExps בדוט נט. Regular Expressions הם בעצם תבניות שניתן להתאים מול מחרוזות טקסט, וכך לחלץ מהן מידע, לבדוק שהן מתאימות לצורת הקלט הנדרשת לפני העברה כפרמטר וכו'. המחלקה Regex היא המחלקה דרכה עובדים. אובייקט מסוג Regex אינו ניתן לשינוי (immutable) וניתן להגדירו או דרך ה-constructor או בעת קריאה ל-overloads סטטיים למתודות שהוא חושף (ומקבלות את התבנית כפרמטר).
המתודות החשובות של המחלקה Regex וערך ההחזרה IsMatch - מאפשרת לבדוק האם מחרוזת כלשהי תואמת לתבנית שהוכנסה (מחזירה ערך מסוג bool) Match - מחזירה אובייקט מסוג Match שמכיל את ההתאמה של המחרוזת לתבנית. לאובייקט המוחזר יש מתודה בשם NextMatch שמחזירה את ההתאמה הבאה Matches - פועלת בדומה ל-Match, אך מחזירה את כל ההתאמות בתוך MatchCollection Replace - מחליפה רצפים במחרוזת לפי התבנית ולפי מחרוזת החלפה, שיכולה לקבל קבוצות לפי ההתאמה ({1}$ מקבלת את קבוצת ההתאמה הראשונה, {name}$ מקבלת את קבוצת ההתאמה שנקראה name - מסומן בתבנית: (+.<name>?)) Split - מחזירה מערך של תת-מחרוזות ממחרוזת שפוצלה לפי תבנית שמגדירה נקודת פיצול קיימות עוד מתודות, אך הן בעלות שמות אינטואיטיביים או שאינן שימושיות כ"כ.
נקודות חשובות
מה בין Capture ו-Group ?Group מחזיר קבוצת התאמה - תת-תבנית מוקפת בסוגריים. Capture מחזיר את הטקסט שהותאם במדויק בתוך ה-Group.
קיים enum שנקרא RegexOptions - הוא מכיל אפשרויות שונות להפעלת ה-Regex. ניתן למצוא פירוט ב-MSDN; רובן בעלות שמות מובנים.
קימפול RegEx - ניתן לקמפל ביטויים רגולריים לתוך assemblies דרך הדוט נט - דבר שמאפשר להם לרוץ מהר יותר, אך במחיר של זמן טעינה ארוך יותר. כדי להשתמש בהם אח"כ, עושים reference ל-assembly הנ"ל ופשוט מאתחלים מחלקה שתבצע את פעולת ה-Regex (למעשה, המחלקה הזו יורשת מ-Regex), לפי ההגדרות שניתנו בעת הקימפול. יש כאן מאמר שמביא דוגמה לכך. ___ וסליחה על האיחור
מרחב השמות System.Text.RegularExpressions כולל את המימוש ל-RegExps בדוט נט. Regular Expressions הם בעצם תבניות שניתן להתאים מול מחרוזות טקסט, וכך לחלץ מהן מידע, לבדוק שהן מתאימות לצורת הקלט הנדרשת לפני העברה כפרמטר וכו'. המחלקה Regex היא המחלקה דרכה עובדים. אובייקט מסוג Regex אינו ניתן לשינוי (immutable) וניתן להגדירו או דרך ה-constructor או בעת קריאה ל-overloads סטטיים למתודות שהוא חושף (ומקבלות את התבנית כפרמטר).