דף הבית » קידוד » מדריך למתחילים לביטוי רגולרי (Regex)

    מדריך למתחילים לביטוי רגולרי (Regex)

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

    ראיתי כמה אנשים מסתכלים על רג'קס, ומתעלמים מהם לגמרי. אני לא מאשים אותם; התחביר של regex הוא מורכב ויהפוך רבים cringe בדיוק כמו שפות שורת הפקודה, רק יותר גרוע. אבל אז כל דבר חדש הוא מפחיד נראה בלתי אפשרי ללמוד בהתחלה. אז, לשאול את המילים של Horatius אני אומר את זה; בגין, להיות מודגש, ואת סיכון להיות חכם.

    אודות Regex

    Regex היו שורשיה ב neuroscience ומתמטיקה ו יושם רק תכנות בשנת 1968 על ידי קן תומפסון ב QED עורך טקסט לחיפוש טקסט. עכשיו זה חלק משפות תכנות רבות כמו Perl, Java, Python, Ruby ו- JavaScript.

    בואו נסתכל על כמה דוגמאות על איך regex עובד.

    אני משתמש ב- JavaScript בדוגמאות שלי. עכשיו, כדי לעבור את רמת מתחילים, אתה צריך ללמוד את כל תווים, מחלקות, כימות, מכפילים ושיטות בשימוש ב regex. הנה קישור לדף הביטוי הרגיל של Mozilla Developer Network שבו תוכל להציג טבלה המכילה את כל אלה. אתה יכול גם להתייחס cheatsheet בסוף הודעה זו עם רוב הדמויות בשימוש.

    בואו נראה דוגמה פשוטה עם הסבר. זהו regex.

    זה מה regex לעיל יחפש בשורה, תו 'B' ואחריו לפחות אחד מכל תו בין (כולל) 'א' ל 'ז', 'א' ל 'Z ומספרים 0 עד 9.

    הנה דוגמה של התאמות בשורה מודגשת:

    סל, נורה, B12 ויטמין, BaSO4, N לפני הספירה חברה

    את regex לעיל יפסיק את החיפוש ב סל ולהחזיר תגובה חיובית. זה בגלל שינוי הגלובלי 'ז'חייב להיות מוגדר אם אתה רוצה את regex להסתכל לתוך כל ההתאמות האפשריות.

    עכשיו, בוא נראה כיצד להשתמש בביטוי זה ב- JavaScript. ה מבחן השיטה הולכת: אם נמצא התאמה לחזור נכון, Other שקר.

     var input = "מחרוזת הבדיקה שלך", regex = / B [a-zA-Z \ d] + /; אם (! regex.test (קלט)) התראה ('לא נמצאה התאמה'); מלבד התראה ('נמצאה התאמה');

    ננסה שיטה אחרת: התאמה מחזירה את ההתאמות שנמצאות במערך.

     קלט \ u200b \ u200b \ u003d \ / g, / * הוספתי את התוסף העולמי 'g' ל- regex כדי לקבל את כל ההתאמות * / ary = 220.m (regex); אם (arry === null) התראה ('לא נמצאה התאמה'); אחר ההתראה ('התאמות הן:' + ary.toString ());

    מה דעתך על מחרוזת החלף? בוא ננסה את זה עם regex עכשיו.

     var input = "מחרוזת הבדיקה שלך", regex = / B [a-zA-Z \ d] + / g; התראה (input.replace (regex, "#"));

    להלן קוד codpen לך לצבוט. לחץ על הכרטיסייה "JavaScript" כדי להציג את קוד JS.

    תרגילים

    עבור תרגילים, אתה יכול Google “תרגילי regex” ולנסות לפתור אותם. הנה מה לצפות כאשר מנסים התרגילים האלה, על פי רמות קושי.

    בסיסי

    לי להיות מסוגל לאמת סיסמה זה מספיק בתור התחלה. אז, לאמת סיסמה עבור אורך 8 עד 16 תווים, אלפאנומרי עם הבחירה שלך תווים מיוחדים מותר.

    ביניים

    זה המקום שבו אתה צריך להתאמן עם נתונים בעולם האמיתי יותר וללמוד כמה נקודות רג 'ק יותר כמו מבט לאחור, טענות ו קבוצות תואמות;

    • אמת קוד PIN, הקסדצימלי, תאריכים, מזהה דוא"ל, נקודה צפה.
    • החלפה של אפס, רווחים לבנים, קבוצה של מילים תואמות
    • חלץ חלקים שונים של כתובת אתר

    מתקדם

    אתה יכול לייעל את הפתרונות של התרגילים הנ"ל - regex אופטימלית ביותר עבור דוא"ל יש אלפי תווים זה - כך קח את זה עד כמה אתה מרגיש בנוח עם וזה מספיק. תוכל גם לנסות:

    • ניתוח HTML או XML (בכל מקרה בעולם האמיתי זה מיואש לעשות זאת, כי באמצעות ביטוי רגולרי כדי לנתח שפה לא רגילה כמו HTML לעולם לא יהפכו את זה בטוח.בנוסף ניתוח XML היא משימה קשה, מתאים יותר למשתמשים ברמה גבוהה)
    • החלפת תגים
    • הסרת הערות (למעט ההערות המותנות של IE)

    כלים

    כלים לדמיין regex הם אחד הדברים הכי מגניבים שם בשבילי. אם אי פעם להתקל regex מורכבים ארוכים, פשוט להעתיק להדביק אותם לתוך אחד הכלים האלה ואתה תוכל להציג את הזרימה בבירור. חוץ מזה, ישנם כלים רבים שבהם ניתן להשתמש כדי לשחק עם קוד regex. הם גם להציג דוגמאות ו cheatsheets יחד עם תכונות לשתף.

    • Debuggex - הוא מצייר דיאגרמת regex לפי קלט שלך ואתה יכול לעשות שיתוף מהיר StackOverflow ממש משם.
    • RegExr - אתה יכול לבדוק את regex שלך עם זה. כמו כן יש התייחסות, cheatsheet ודוגמאות כדי לעזור לך.
    • Refidel - כרגע, מלבד JavaScript, אתה יכול גם לשחק עם רובי ו- .NET גירסאות של regex בו.

    רג'קס צ'יטשט

    אסימון הגדרה
    [א ב ג] כל תו יחיד a, b או c
    [^ abc] כל תו שאינו a, b או c
    [a-z] תו בין (כולל) ל- z
    [^ a-z] תווים מלבד מ- z
    [A-Z] תו בין (כולל) א 'עד ת'
    . כל תו בודד
    \ s כל תו רווח לבן
    \ S כל תו שאינו לבן
    \ d כל ספרה 0 עד 9
    \ D כל ספרה
    \ w כל תו מילה (אות, מספר & קו תחתון)
    \ W כל תו שאינו מילה
    (...) לכוד הכל סגור
    (א) ב התאם או a
    א? תו a הוא נעדר או נוכחים פעם אחת
    a * תו a הוא נעדר או נוכח פעמים נוספות
    א+ תו a מופיע פעם אחת או יותר
    א 3 3 המופעים של אופי ברצף
    א 3, 3 או יותר התרחשויות של אופי ברצף
    a 3,6 3 עד 6 המופעים של אופי ברצף
    ^ התחלה של מחרוזת
    $ סוף מחרוזת
    \ b גבול מילה. אם תו הוא אות המילה האחרונה או המילה הראשונה או אם תו הוא בין מילה או מילה לא מילה
    \ B גבול ללא מילים

    עכשיו קרא: ביטויים רגולריים: 30 כלים שימושיים ומשאבים