REGSUBEX זה שילוב בין regex ל replace, החלפה ע"י תבנית רגאקס לוגית.
בחלק זה תזדקקו כבר להבנה מלאה ברגאקס הבסיסי, לחלק הזה לא קופצים ישר.
אנו נתחיל מדוגמא קלה של איך עושים שהניק ZxoR יהפוך לZ-xo-R ע"י רגסאבקס.
אז כדי לעשות את זה, נצטרך להכין פטרן שהוא על כינוי מסויים שמכיל שלושה חלקים: אות ראשונה, אמצע (לא חובה, במידה ויש כינוי עם 2 אותיות) ואות אחרונה:
קוד: בחר הכל
/\w\w*\w/
כעת, כדי להשתמש בהחלפה, נצטרך להכניס את החלקים האלו לזכרון ע"מ שנוכל לשלוף אותם לאחר מכן באיזור ההחלפה:
קוד: בחר הכל
/(\w)(\w*)(\w)/
כעת, במידה והטקסט שיוכנס יהיה ZxoR, הREGMLים יראו כך:
קוד: בחר הכל
1 = Z
2 = xo
3= R
בצורה הפשוטה נוכל לעשות זאת על ידי $regml לדוגמא:
קוד: בחר הכל
$+($regml(1),-,$regml(2),-,$regml(3))
אך אין בזה צורך, ופה נכנסת הפקודה: $regsubex
לרגסאבקס יש פרמטר אחד שאין ב$regex, הפרמטרים של $regsubex הינם:
קוד: בחר הכל
$regsubex(text,pattern,replace)
ואם נרצה לעשות את ההחלפה הזאת, נעשה אותה כך:
קוד: בחר הכל
//echo -ag $regsubex(ZxoR,/(\w)(\w*)(\w)/,\1-\2-\3)
תתרכזו בחלק השלישי של הרגסאבקס, שם נמצא העניין:
קוד: בחר הכל
\1-\2-\3
אם 1 הוא Z, ו2 הוא xo ו3 הוא R, משמע ש
קוד: בחר הכל
\1-\2-\3
יהיה
קוד: בחר הכל
Z-xo-R
ובכך יצרתם את ההחלפה הראשונה שלכם, וראיתם עד כמה REGSUBEX שימושי, קחו לעצמכם משימה לבנות רגסאבקס שעושה את האות הראשונה והאחרונה בניק כאות מודגשת (Bold).
פתרון:
קוד: בחר הכל
//echo -ag $regsubex(ZxoR,/(\w)(\w*)(\w)/,\1\2\3)
(יש להעתיק למירק, לא רואים בפורום את הBOLD)
קחו לעצמכם עוד אתגר, הפעם קצת קשה יותר:
צרו REGSUBEX שהופך כל אות במילה לצבע אחר.
רמזים: יש להשתמש בסוגריים, בGLOBAL וב$rand
לפתרון כנסו לפה (מומלץ ללמוד לבד ולא לקרוא ישר תפתרון, אחרת לא תפתחו לוגיקה לרגאקס): http://pastebin.com/LL85nKUN
בהצלחה!