שיעורי מודול (3/4)
התו הכללי: הנקודה `.`
הנקודה . בביטוי הרגולרי הוא תו כללי: הוא תואם כל יחיד
תו\u2026 למעט חריג אחד חשוב: הוא לא תואם ל
קו חדש (\n).
Pattern: c.t
Sample: cat cot cut c@t c\nt
^^^ ^^^ ^^^ ^^^שלוש אותיות: c, כל תו, t. אין שורה חדשה בין לבין, אז c\nt
אינו תואם (כברירת מחדל).
הנקודה שימושית ביותר אך גם מסוכנת: משתמשים בה ללא משמעת
לוכד יותר ממה שהתכוונת. בשילוב עם המכמים במודול 2
(.*, .+?) זה המקור ל-90% מהדפוסים ש"לא עובדים כמוני
צפוי".
הדגל s: "dotAll"
עם הדגל s (נקרא גם dotAll או שורה אחת) הנקודה תואמת
כל דמות, כולל שורה חדשה. שימושי לחילוץ בלוקים המתפרשים
שורות מרובות.
Pattern: <p>.*</p>
Flag: gs
Sample: <p>prima\nseconda</p>
^^^^^^^^^^^^^^^^^^^^^מגבלות והתנהגות של התו הכללי של הנקודה
הנקודה . היא תו כללי רב עוצמה, אך כברירת מחדל היא אינה תואמת לתווים בשורה חדשה (\\n). אם אתה רוצה שהנקודה תתאים לחלוטין לכל דבר, כולל שורות חדשות, עליך להפעיל את הדגל s (dotAll). היזהר בעת שילוב הנקודה עם מכמתים (.*), מכיוון שהיא נוטה לצרוך יותר מדי טקסט (התנהגות חמדנית).
נסה את זה
מצא כל שלישיה של תווים מופרדים בסוגריים, למשל. `(abc)`, `(xyz)`. השתמש בתווים כלליים עבור 3 הדמויות הפנימיות.
הצג רמז
שלוש נקודות עבור שלוש תווים שרירותיים. הסוגריים הם מטא-תווים: יש להמלט עליהם עם \\.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
חלץ את הבלוק בין `[INIZIO]` ו-`[FINE]`, שיכול להשתרע על פני מספר שורות. תזדקק לדגל `s` כך שהנקודה תתאים גם לשורות חדשות, ולגרסה ה'עצלה' של הכמת (`.*?`, מודול 2).
הצג רמז
ללא הדגל s, הנקודה נעצרת בסוף השורה: הוסף אותה. הטופס .*? (עצלן) עוצר את המשחק ב-[FINE] הראשון.
הפתרון זמין לאחר 3 ניסיונות
אתגר נוסף
Find all 3-character sequences starting with `c` and ending with `t` (e.g. `cat`, `cot`, `c-t`).
הצג רמז
התבנית משתמשת בנקודה '.' כדי לייצג את התו האמצעי.
הפתרון זמין לאחר 3 ניסיונות