עמוד ראשי מירק סקריפטינג מדריכים [מדריך] Regex חלק שלישי

[מדריך] Regex חלק שלישי

mIRC Guides - בפורום זה יפורסמו מדריכים לשפת המירק, הסברת פקודות ואפשרויות במירק וגם הסברים לשימוש בתוכניות חיצוניות לטובת המירק. לפרסום מדריכים יש לפרסמם תחילה בפורום "פרסום קודים ומדריכים" ולאחר מכאן הם יועברו לפורום זה.

ZxoR
מנהל גלובאלי
[מדריך] Regex חלק שלישי
הצטרף: 01 יולי 2010, 07:43
הודעות: 370
פורסם: 11 אוגוסט 2011, 04:23
אז הפעם נלמד תנאים ושילוב של $regml לראשונה ללקיחת נתונים.
שימו לב שהרגאקס כבר נהיה פה קצת יותר לוגי מפעמים קודמות, בהצלחה!
אז ככה, תנאים עושים בצורה הזאת:
(a|b|c)

וזה יגיד: או A או B או C

דוגמא שנייה:
(cat|dog)

או כלב או חתול.

עכשיו, בוא ניתן לעצמינו משימה: זיהוי מתי בנאדם מדבר על כלב או חתול, ובמידה והוא מדבר על כלב הוא חתול אז שיגיד על מה הוא מדבר (כלב או חתול).
אז נתחיל בתנאי של הזיהוי:
if ($regex($1-,/(cats?|dogs?)/)) { ... }

(אם לא הבנתם למה הסימן שאלה, הסימן שאלה חל על האות s, מה שאומר שאפשר לכתוב גם cat ביחיד וגם cats ברבים).
עכשיו, התנאי שיצרנו יבדוק אם בטקסט קיימת המילה או cat או cats או dog או dogs, אם כן: ...

עכשיו, איך נוכל לדעת על מה הוא דיבר? אז פה מגיע הסוג, הסוגריים הם לא רק תנאי, אלא גם משמשים לשמירת התוכן שלהם לזכרון הרגאקס שנקרא גם בשמו האחר: regml.
במידה והתנאי שלנו נכון, סימן שהמשתמש כתב משהו שנתנו בתנאי, ומה שהוא רשם יכנס לתוך $REGML, ובכלל שיש רק תנאי אחד, משמע זה יהיה:
$regml(1)


מה שאומר שאפשר לעשות:

if ($regex($1-,/(cats?|dogs?)/)) { msg # $nick has already talked about $regml(1) }


עכשיו תצטרכו להבין כי לא מדובר רק בתנאי, הסוגריים משמשים גם כדי לקחת מידע מתוך נתונים, ואתן דוגמא.
יש לנו את הטקסט הבא:
<script type="text/javascript">

נרצה לקחת את הטקסט מתוך הגרשיים (text/javascript) ונעשה זאת קודם כל בעזרת זיהוי הפטרן:
/<script type=".+">/i


עכשיו, אין ניקח את בין הגרשיים? נכניס לסוגריים!
/<script type="(.+)">/i

כעת מה שנכתב בין הגרשיים יהיה $regml(1)

כעת עוד דוגמא כדי להראות לכם שאפשר גם יותר מREGML אחד:
<link href="./styles/studio31/theme/print.css" rel="stylesheet" type="text/css" media="print" title="printonly" />


נהפוך את זה לרגאקס עם סוגריים:

<link href="(.+)" rel="(.+)" type="(.+)" media="(.+)" title="(.+)" />

כעת:
HREF = $regml(1)
REL = $regml(2)
TYPE = $regml(3)
MEDIA = $regml(4)
TITLE = $regml(5)


כעת נלמד לעבוד עם REGML בתוך הרגאקס עצמו, לדוגמא בתגי HTML:
/<tag>.+<\/tag>/i

זה מזהה תאג HTML בשם TAG, אבל נגיד היינו רוצים להתאים את זה לכל תג אפשרי? היינו צריכים להשתמש בסוגריים על השם של הטאג, לשמור אותו לזכרון ולאחר מכן לבדוק מתי הוא נסגר, זאת אומרת /TAG, סלאש והתאג שהיה לפניו.
אז נעשה את התאג בסוגריים ונהפוך אותו בכלל לנקודה כדי שכל תאג יהיה אפשרי:
/<(.+)>.+<\/tag>/i

עכשיו נרצה לבדוק מתי הוא נסגר, אז כדי לייבא REGML בתוך הקוד משתמשים בתו שבירה ומספר הREGML לדוגמא:
\1 = $regml(1)
\2 = $regml(2)


אז כדי לבדוק מתי התאג נסגר נעשה:
/<(.+)>.+<\/\1>/i

ובכך נבדוק את כל תאג ומתי שהוא נסגר.
תזכורת: אם לא הבנתם למה יש /\, זה בגלל ש/ הוא תו שמור ואי אפשר להשתמש בו סתם ככה, אז צריך לשים לפניו תו שבירה \ וככה זה יוצא /\ ואז בעצם זה מסמל את התו / בסוגר של HTML.


בהצלחה !
שימו לב: בוטי המשחק שאני בונה לא מתאימים לQuakenet אלא אם כן צויין אחרת.
<+vendetta-> סיאג לחוכמה שתיקה
<+vendetta--> בא לי מוח
<Ninja`> דפקתי נקנקיה

הצטרף: 15 אוגוסט 2010, 14:55
הודעות: 20
פורסם: 11 אוגוסט 2011, 11:52
תודה יונתן הפצצת הייתי בדיוק צריך את זה!

הצטרף: 20 יוני 2011, 21:35
הודעות: 100
פורסם: 11 אוגוסט 2011, 12:11
ושוב תודה !!!

הצטרף: 31 אוגוסט 2010, 11:07
הודעות: 57
פורסם: 14 אוגוסט 2011, 16:22
תודה רבה על המדריך!


חזור אל מדריכים

cron