כיצד להתחיל להשתמש ב-Regex עם אפליקציית קיצורי הדרך

במהלך החודש האחרון בערך, סיקרתי את יישומי קיצורי הדרך ו-Automator ב-iOS וב-macOS, בהתאמה. שניהם הם מוקדי כוח בכל הנוגע לאוטומציה במערכת האקולוגית של אפל, והחל מ-macOS Monterey בסתיו הקרוב, קיצורי דרך יהיו אפליקציית האוטומציה המומלצת בכל מכשירי אפל. זו הסיבה שבגללה רציתי לבלות את המאמר הזה בדיון בנושא חזק מאוד: שימוש ב- regex עם אפליקציית קיצורי הדרך.

אמנם יש לי רקע במדעי המחשב ובתכנות, אבל איכשהו מעולם לא נתקלתי ב-Regex. אולי השם הפחיד אותי, או אולי זה היה הקוד, שהוא חלק מהקוד הכי פחות קריא שראיתי אי פעם.

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

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

אז בפוסט של היום, אתה ואני הולכים ללמוד את היתרונות והחסרונות של הרקס ביחד. כך תוכל להפיק את המרב מכל אחת מהאפליקציות הללו.

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

בסדר, בואו נתחיל!

תוכן

  • מהם ביטויים רגולריים (כלומר, ביטוי רגולרי)?
    • דברים שאתה יכול לעשות עם regex
  • כיצד ניתן להשתמש בביטוי רגיל עם אפליקציית קיצורי הדרך?
  • השתמש ב-regex101.com כדי לבדוק את הביטויים הרגולריים שלך
  • אם אינך רוצה ללמוד כיצד להשתמש ב-Regex עם אפליקציית קיצורי הדרך, קרא את זה
  • Regex למתחילים: התחל להשתמש ב-Regex עם קיצורי דרך
    • מהם טעמי הרקס?
    • אתרים והפניות שיעזרו לך להתחיל ללמוד ביטוי רגולרי עם קיצורי דרך
    • כיצד לבצע חיפוש טקסט בסיסי באמצעות ביטוי רגיל עם קיצורי דרך
    • הוספת רכיבים משתנים לחיפושים הרגולריים שלך
    • טווחים יכולים להרחיב את החיפוש שלך
    • כיצד להחריג מילים ותווים מהחיפושים הרגולריים שלך באמצעות קיצורי דרך
    • תווים כלליים יכולים לתת לך אפשרויות חיפוש נוספות
    • השתמש בכימות כדי לציין את אורך הטקסט שאתה מחפש
    • יש עוד כמה מכמתים שתרצה לדעת עליהם
    • חפש תווים בתחילת ובסוף של מחרוזת טקסט
    • אחסן מחרוזות טקסט באמצעות פונקציית הקיבוץ של ביטוי רגיל עם קיצורי דרך
  • עכשיו מה?
    • איך היית מפרק את זה?
  • התחל להשתמש בביטוי רגיל עם קיצורי דרך כדי לקחת את האוטומציה שלך לשלב הבא
    • פוסטים קשורים:

מהם ביטויים רגולריים (כלומר, ביטוי רגולרי)?

ביטוי רגולרי, או "רגקס", הוא קטע קוד שבו אתה יכול להשתמש כדי לחפש קטע טקסט בתוך קטע טקסט גדול יותר.

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

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

לדוגמה, אם אתה רוצה לחפש את המילה "אימייל", אתה יכול בקלות לכתוב קוד רגולרי שמחפש אימייל.

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

עכשיו, נניח שאתה לא רק רוצה למצוא אימייל אחד מפיסקה אלא כֹּל אימייל. אולי אתה רוצה להעתיק אותם במהירות למקום אחר, לעדכן אותם לפורמט חדש, או להחליף אותם כך שכולם יגידו "[מוגן באימייל]“.

ככל שתהיה יותר ויותר מיומן ומנוסה עם regex, תוכל לעשות את כל הדברים האלה ועוד.

דברים שאתה יכול לעשות עם regex

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

באופן כללי, כל מה שהרגקס יכול לעשות נופל לאחת מארבע הקטגוריות הבאות:

  1. מצא מחרוזת טקסט בקטע טקסט גדול יותר (כלומר, חיפוש מילה/מחרוזת/סוג מחרוזת בדף טקסט).
  2. אשר שמחרוזת טקסט תואמת את הפורמט הרצוי (כלומר, בדוק שמחרוזת טקסט מסודרת/מסודרת/מנוקדת כהלכה).
  3. החלף או הוסף טקסט באזור מסוים של קטע טקסט.
  4. פצל מחרוזת טקסט בנקודות שצוינו (למשל, חלקו פיסת טקסט בכל פעם שיש פסיק).

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

כיצד ניתן להשתמש בביטוי רגיל עם אפליקציית קיצורי הדרך?

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

אז איך זה עוזר לך בקיצורי דרך? בדומה להוספת סקריפטים לקיצורי הדרך שלך, זו דרך לעבור מאוטומציות בסיסיות (שלח לי הודעה כשהדלת הקדמית נפתחת) לאפשרויות מתקדמות יותר (צור באופן אוטומטי אירוע יומן לפגישות שלי בכל פעם שאני מקבל אימייל לפגישת Zoom מהעבודה).

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

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

בעת שימוש באפליקציית קיצורי הדרך ב-Mac (בסתיו 2021), אתה יכול להשתמש ב-Regex כדי לבצע פעולות אצווה על פיסת טקסט. לדוגמה, תוכל להעתיק את כל הודעות האימייל במבחר טקסטים כרשימה מסודרת. לחלופין, תוכל להחליף את כל השמות במסמך בתווי "*" כדי להבטיח פרטיות.

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

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

השתמש ב-regex101.com כדי לבדוק את הביטויים הרגולריים שלך

ברגע שתתחיל להשתמש בביטוי רגיל עם קיצורי דרך, תתקל בנקודת תסכול:

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

אבל עבור בדיקת קוד, זה לא מאפשר בדיקה שורה אחר שורה וזה לא מציע הרבה משוב.

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

regex101.com משתמש בטעם שונה של regex מזה שנתמך על ידי קיצורי דרך (עוד על זה בעוד דקה), אבל זה מספיק קרוב כדי שלא תיתקלו בבעיות רבות מדי.

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

אם אינך רוצה ללמוד כיצד להשתמש ב-Regex עם אפליקציית קיצורי הדרך, קרא את זה

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

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

הנה כמה קישורים שתוכלו לבדוק אם אינכם רוצים ללמוד ביטויים רגילים:

  • https://www.shortcutfoo.com/app/dojos/regex/cheatsheet
  • https://www.reddit.com/r/shortcuts/comments/9zo24n/regex_cookbook_for_shortcuts_reusable_regex_to/
  • https://www.reddit.com/r/shortcuts/comments/b5labq/match_text_examples_for_the_beginner_a_regex/
  • http://www.rexegg.com/regex-cookbook.html

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

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

זה רק עניין של היכרות - אחרי שתסתכל על זה מספיק זמן, זה יפסיק להיראות כל כך מוזר. אז אם יש לך זמן ואתה פשוט מאוים, אל תהיה!

Regex למתחילים: התחל להשתמש ב-Regex עם קיצורי דרך

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

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

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

בסדר בואו נלך!

מהם טעמי הרקס?

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

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

בתכנות, פרטי העיצוב הללו ידועים בשם "תחביר". זו בדיוק הדרך שבה אתה צריך לכתוב את הקוד שלך כדי שהקוד הזה יובן לאפליקציה שבה אתה כותב אותו.

הנה למה התחביר חשוב

"היי חבר, איך עובר היום שלך?"

", הולך חבר? יום היי שלך איך"

לשני המשפטים אותם מילים, תווים ורווחים. עם זאת, רק אחד הגיוני, וזה בגלל שהוא עוקב אחר תחביר קונבנציונלי.

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

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

אפליקציית קיצורי הדרך מבינה את הטעם של טיפול נמרץ של regex, אז זה הטעם שבו תרצו להשתמש. לאתר regex101.com יש כמה טעמים שונים שתוכלו לבחור מהם בצד שמאל של העמוד. עם זאת, הוא משתמש ב-PCRE, שהוא די דומה ל-ICU.

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

אתרים והפניות שיעזרו לך להתחיל ללמוד ביטוי רגולרי עם קיצורי דרך

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

אם אתה רוצה לצלול עמוק יותר לתוך הרקס או מרגיש שהמאמר הזה לא נותן לך את העזרה שאתה צריך, אתה יכול לבדוק כמה מהמאמרים, המדריכים והכלים הבאים:

  • https://regex101.com - אתר המאפשר לך לבדוק את הקוד הרגולרי שלך בזמן אמת.
  • https://www.shortcutfoo.com/app/dojos/regex/cheatsheet - דף רמאות לכשאתה שוכח מה כל דמות עושה
  • http://www.rexegg.com - אתר זה הוא משאב מקיף על לימוד כל מה שאתה צריך לדעת על regex. בדוק את זה אם אתה רוצה להיות מיומן עם regex.
  • https://scottwillsey.com/blog/ios/regex1/ – זוהי סדרת בלוג בת ארבעה חלקים על שימוש ב-Regex עם קיצורי דרך. אני נוקט בגישה שונה מאוד מהמדריך הזה, אז זה אמור להיות סדרה נלווית נחמדה למאמר זה.
  • Stack Overflow ו-Reddit הם שניהם אתרים טובים לשתף את שאלות הרקס שלך ולהתקדם כדי לקבל עצות ותשובות.

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

כיצד לבצע חיפוש טקסט בסיסי באמצעות ביטוי רגיל עם קיצורי דרך

בְּסֵדֶר! עכשיו הגענו לנקודה שכולם חיכו לה: אנחנו הולכים ללמוד את היסודות של השימוש ב-regex עם קיצורי דרך.

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

באופן הבסיסי ביותר, הביטוי הרגולרי יחפש את (or התאמה) מה שתקלידו בו. למשל, אם הייתי מקליד בְּסֵדֶר בתור הקוד הרגולרי שלי, הוא ימצא כל מופע של המילה "בסדר" במדריך זה.

האותיות, המרווחים והפיסוק חשובים. זה אומר ש בְּסֵדֶר, בְּסֵדֶר, בְּסֵדֶר!, ו בסדר, כולם הולכים להניב תוצאות שונות.

וזה הכל! בכל פעם שאתה מקליד משהו בחיפוש רגולרי מבלי להשתמש באף תווים מיוחדים, ביטוי רגולרי יתאים לכל דבר שמתאים בדיוק למה שהקלדת.

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

ה ? סמל הוא דמות אחת כזו. הוא משמש בקוד רגקס ככמת. אז אם תנסה לחפש "בסדר?" על ידי הקלדה בְּסֵדֶר? בתור הקוד הרגולרי שלך, אתה לא הולך להשיג את מה שאתה רוצה.

כדי לתקן זאת, עליך לציין שברצונך להשתמש ב-"?" כמחרוזת, לא כדמות מיוחדת. כדי לעשות זאת עבור דמות זו או כל דמות אחרת, פשוט הוסף א \ סמל ממש לפני הדמות שאת התכונות המיוחדות שלה אתה רוצה לבטל.

אז אם אתה רוצה לחפש "בסדר?" עם regex, הקוד שלך ייראה כך:

בְּסֵדֶר\?

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

חפש יותר ממילה אחת באמצעות התו "או".

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

לדוגמה, אם אני רוצה לחפש בגוף הטקסט את המילה "בסדר" ו"בסדר", אשתמש ב- | אופי. ככה:

בסדר|בסדר

אם אתה מתקשה למצוא את | אופי, החזק את מִשׁמֶרֶת הקש ולחץ על \ מַפְתֵחַ. זה מעל ה לַחֲזוֹר מקש ברוב המקלדות.

הוספת רכיבים משתנים לחיפושים הרגולריים שלך

אוקיי, אז עכשיו כשאתה יודע מה זה regex ניטרלי, הגיע הזמן להרים את הדמות המיוחדת הראשונה שלך. אלו יהיו הסוגריים המרובעים, שהם הדברים האלה [].

כל מה שתכניס בתוך סוגריים אלה ייחשב כמרכיב משתנה בחיפוש הרקס שלך. אתה יכול לשים כמה תווים בסוגריים שאתה רוצה, אם כי רק אחד יהיה תקף בכל התאמה.

בסדר, זה נשמע קצת מסובך, אבל זה לא! כך זה נראה בפועל:

  • [בְּסֵדֶר פשוט יתאים למילה "בסדר". די חסר טעם.
  • [AB]נכון יתאים גם ל-"בסדר" וגם ל-"Blright".
  • אלר[iouxyz]ght יתאים ל-"בסדר", "בסדר", "בסדר", "בסדר", וכן הלאה.

אתה יכול לשלב תווים בתוך סוגריים מרובעים וכן להשתמש בסוגריים מרובים באותה שורה של ביטוי רגולרי. [AB]r[i1]gh[tuvwxyz] הוא חלק חוקי של ביטוי רגולרי. יש לקוות, עם זאת, זה לא נראה כל כך כאוטי כפי שהיה עשוי להיראות לפני כמה דקות!

טווחים יכולים להרחיב את החיפוש שלך

החלק הרגולרי הבא שיהיה שימושי עם קיצורי דרך הוא הטווח. טווחים מאפשרים לך לציין טווח של תווים שתקבל.

בסעיף הקודם, אולי שמתם לב שהסוגריים שלי כללו הרבה אותיות רצופות. הארוך ביותר היה [tuvwxyz]. האותיות האלה מופיעות באלפבית באותו סדר, ממש אחת ליד השנייה.

זה אומר שאני יכול להשתמש בטווח במקום להקליד אותם. זה יראה כך:

בסדר[t-z]

חתיכת הקוד הרגולרי תעשה את אותו הדבר כמו בסדר[tuvwxyz]. זה פשוט יותר מסודר וקל יותר לכתיבה.

אתה יכול להחליף את אותו טווח עם [א-ז] אם רצית שהוא יקבל כל אות קטנה מהאלפבית. או שאתה יכול להשתמש [0-9] אם רצית לקבל מספר חד ספרתי כלשהו.

ניתן גם לשלב טווחים בתוך אותה סוגר. למשל, זה Alr[i-ux-z]ght יקבל את "בסדר", "בסדר", "בסדר" ו"בסדר", אבל הוא לא יקבל את "בסדר" או "בסדר".

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

אם אתה מתקשה להבין מה [i-ux-z] כלומר, זה עשוי לעזור לראות את זה כתוב כך:

[i-u, x-z]

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

אתה לא צריך פסיקים ב-Regex כדי להפריד בין טווחים ואתה לא צריך לשים טווחים ממש ליד זה. אתה יכול לשנות את זה ל [i-uabcx-z]. זה יקבל את אותם טווחים כמו קודם בתוספת התווים "a", "b" ו- "c".

כיצד להחריג מילים ותווים מהחיפושים הרגולריים שלך באמצעות קיצורי דרך

אוקיי, אז עכשיו אנחנו מתקדמים לאנשהו! אם עקבת אחר מאמר זה עד לנקודה זו, אתה אמור להיות מסוגל להסתכל על הקוד שלהלן ולהבין למה הוא מתאים:

Ap[p-r]le[Tt]ool[BbLF]ox

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

שם נכנסת הדמות "לא". זה נראה כמו זה: ^. אם אתה מתקשה למצוא אותו במקלדת שלך (כמו שאני עשיתי), החזק מִשׁמֶרֶת ולחץ על 6 מקש במקלדת שלך.

כדי להשתמש ב ^ תו, מקם אותו בתחילת התו שברצונך לא לכלול.

יש מלכוד! ה ^ התו אינו פועל מחוץ לפונקציה של ביטוי רגולרי. אתה לא יכול פשוט למקם אותו מול האות "A" כדי שהיא לא תכלול את האות הזו מהחיפוש שלך. הקוד הרגולרי פשוט יחפש אות גדולה "A".

במקום זאת, שלב אותו עם סוגריים ודמויות מיוחדות אחרות.

לדוגמה, אם הייתי רוצה לחפש מופע כלשהו של המילה "בסדר" שאינו מתחיל באות "A", הייתי משתמש בקוד [^A]בסדר.

אתה יכול אפילו לשלב את זה עם טווחים! פשוט שים אותו בתחילת הסוגריים שלך, וכל מה שנמצא בתוך סוגריים זה, כולל טווחים, לא ייכלל בחיפוש שלך. ככה:

מה אם אתה רוצה לא לכלול מילה מסוימת מהחיפוש שלך?

היה לי קשה למצוא את המידע הזה. עם זאת, למשתמש של Stack Overflow היה הפתרון, והוא נראה כך:

^(?!(מילה)$).+$

פשוט להחליף מִלָה עם כל מילה שתרצה להוציא מהחיפוש שלך. ככה:

אתה יכול לקרוא את הפוסט של Stack Overflow פה אם אתה רוצה ללמוד עוד על מקרה השימוש הספציפי הזה.

תווים כלליים יכולים לתת לך אפשרויות חיפוש נוספות

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

לא הייתי ממליץ להשתמש בו למטרה זו, כמובן! במקום זאת, אני ממליץ להשתמש בו במקום תו בודד במילה. לדוגמה, בסדר יתאים ל-"בסדר", "Alrxght", "Alr

וזה פחות או יותר זה! דמות התווים הכלליים די קלה להבנה. זה מתאים להכל! זה עוזר למציאת מחרוזות התואמות לפורמט מסוים תוך כדי תווים ייחודיים.

מיילים, למשל, כולם ייראו די דומים מבלי להיות זהים. התו הכללי יכול לעזור לך לשלב אלמנטים שאתה יודע שיהיו שם (כמו ".com" ו-"@") עם תווים שאתה לא מכיר (כמו "my_email567", iCloud או "Gmail").

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

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

והנה כל המחרוזות בנות שבעת התווים באותו גוף טקסט:

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

כמו כן, זכור כי . הוא תו מיוחד ב-Regex. זה אומר שתצטרך להוסיף א \ לפניו אם אתה רוצה לחפש מחזורים. זה אומר שתצטרך להשתמש בְּסֵדֶר\. כדי להתאים את "בסדר".

השתמש בכימות כדי לציין את אורך הטקסט שאתה מחפש

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

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

לדוגמה, נניח שאתה רוצה למצוא כל מילה שאורכה במיוחד שלוש אותיות. כדי לציין זאת, תרצה להשתמש בסוגריים הבאים:

{}

כאשר אתה מציב את הסוגריים האלה אחרי אלה [] בסוגריים, אתה מציין שאתה רוצה מחרוזת שתתאים למספר התווים שבתוך זה {} וטווח התווים המצוין בזה [].

אני בטוח שזה לא הגיוני עכשיו, אז בואו נסתכל על דוגמה!

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

[0-9]{4}

הקוד הזה אומר שאנחנו רוצים מחרוזת המורכבת מתווים מ-0 עד 9 שאורכה במיוחד ארבעה תווים. אתה יכול לראות כיצד הוא מאתר את המחרוזת הספציפית הזו בצילום המסך הבא:

אני צריך לשים לב שיש כמה בעיות עם הקוד הרגולרי הזה, וזה שהוא לא לוקח בחשבון רווחים או סימני פיסוק. אז אם הקוד מוצא מספר באורך של יותר מארבעה תווים, כמו "12345678", הוא ימצא את המחרוזת "1234" ואת המחרוזת "5678".

כדי לתקן בעיה זו, תרצה להוסיף רווח לתחילת הקוד וסוגריים לאחר ה- {4} שמכיל עוד רווח, נקודה, סימן שאלה, פסיק וסימן קריאה. כך, הוא יתעלם ממחרוזות ארוכות של מספרים מבלי להחמיץ מחרוזות של מספרים עם סימני פיסוק בקצה שלהן במקום רווח.

ייתכן שתרצה גם להשתמש במכמתים כדי לציין יותר מאורך אחד של מחרוזת. למשל, אולי אני רוצה למצוא מחרוזת באורך ארבע תווים, אבל גם שבע ואחת עשרה. כך זה ייראה:

[א-ז]{4,7,11}

יש עוד כמה מכמתים שתרצה לדעת עליהם

אוקיי, אז עדיין יש עוד מכמתים! מכמתים אחרונים אלה מיועדים כאשר אתה רוצה לציין את אורך המחרוזת מבלי להיות ספציפי מדי.

לדוגמה, נניח שאתה רוצה למצוא מחרוזת בכל אורך שהביטוי הרגולרי יכול להתאים. כמו שם! שמות (במדינות מערביות) מתחילים באות גדולה אחת ומסתיימים בכמות אקראית של אותיות קטנות, ואחריהן רווח. כדי למצוא שם, תכתוב את הקוד הבא:

[א-ז][א-ז]*

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

שילוב זהב ב-regex הוא .*. זה אומר להתאים כל דמות בלי סוף. במילים אחרות, זה יתאים לכל גוף הטקסט כפריט אחד.

המכמת הבא שתצטרך לדעת הוא +. זה בדיוק כמו * אלא שזה לא יתאים למחרוזת עם אפס תווים. * יתאים לכל אורך של מחרוזת, הכוללת מחרוזות שאין להן אורך. +, לעומת זאת, צריך מחרוזת עם לפחות תו אחד או יותר.

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

חפש תווים בתחילת ובסוף של מחרוזת טקסט

אנחנו מתקרבים לסוף המדריך שלנו לשימוש בביטויים רגילים עם קיצורי דרך! ישנם רק שני סוגים נוספים של קוד ביטוי רגולרי שבו תשתמש עם קיצורי דרך.

הראשון הוא תווים המאפשרים לך להתאים מחרוזות על סמך האופן שבו הם מתחילים ו/או מסתיימים.

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

עם זאת, זה לא תואם את כל המילה. בשביל זה, תצטרך לשנות את זה ל ^A[A-Za-z]*. זה יתאים למילה הראשונה של פסקה/מחרוזת, כל עוד המילה הזו מתחילה באות גדולה "A".

כהערת צד, אתה יכול לכתוב [א-זה-ז] כפי ש [א-ז]. זה אומר אותו דבר, אני רק מגלה שהראשון קצת יותר ברור כשאתה לומד.

כדי לציין את סוף המחרוזת, תרצה להשתמש ב- $ אופי. זה עובד כמו ה ^ אופי. ההבדל היחיד הוא שאתה כותב את זה בסוף סוגריים/מחרוזת ולא בהתחלה.

לדוגמה, אם תרצה למצוא מחרוזות/פסקאות המסתיימות ב-"le", היית משתמש בקוד [A-z]*le$. זה יתאים ל"טבלה", "תפוח" ו"מסוגל" כל עוד הם נמצאים בסוף מחרוזת או פסקה.

Regex אפילו יכחיש את ההתאמה הזו אם יש רווח או סימן פיסוק בסוף המחרוזת. "שולחן." לא יקבל התאמה לקוד זה.

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

[A-z]*(le[\.\?!, ]?[ ]?)$

הקוד הזה יתאים ל-"Able", "table", "stable" ו-"capable? “.

אחסן מחרוזות טקסט באמצעות פונקציית הקיבוץ של ביטוי רגיל עם קיצורי דרך

בְּסֵדֶר! הגעת לסוף המדריך שלנו ל-AppleToolBox על שימוש ב-Regex עם קיצורי דרך. נותרה רק עוד פונקציית ביטוי רגקס אחת ללמוד, והיא קיבוץ.

קיבוץ הוא ללא ספק התכונה החשובה ביותר של ביטוי רגולרי מכיוון שהוא מה שמאפשר לך לעשות דברים עם קוד הרקס שאתה כותב. בלעדיו, ביטוי רגיל הוא רק תכונת חיפוש. זה יכול להגיד לך רק אם קיימת מחרוזת בתוך גוף טקסט גדול יותר, כלומר, היא תחזיר "true" או "false".

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

למרבה המזל, קיבוץ הוא סופר קל! פשוט שים את כל מה שאתה רוצה לקבץ בסוגריים (). כל מה שתכניס בסוגריים יטופל כקבוצה.

אם תשים שורה שלמה של קוד ביטוי רגולרי בתוך סוגריים, כמו (.*@.*\..{3}), אז הקבוצה הזו תיזכר על ידי הקוד שלך, מה שיאפשר להחזיר אותה בהמשך השורה.

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

אתה יכול להשתמש בקבוצות גם לארגון

אתה יכול גם להשתמש בקבוצות כדי לארגן את הקוד הרגולרי שלך עם קיצורי דרך. כאשר אתה עושה זאת, הקבוצה בתוך הסוגריים לא בהכרח תיזכר.

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

כדי שזה יעבוד, אני כותב את הקוד לעזאזל[A-z]|[0-9]+. אבל זו התוצאה שאני מקבל:

הסיבה שזה לא תואם את הדרך שציפיתי היא שה + מוחל רק על [0-9] סוֹגֵר. אני צריך שזה יחול על שני הסוגריים.

בנוסף, הקוד הזה אומר שאני רוצה גם לעזאזל[א-ז]אוֹ[0-9]. אז זה מתאים למילים שמתחילות ב"גיהנום" ומסתיימות באות, או שהיא מחפשת מחרוזות של מספרים. מה שאני בעצם צריך זה שזה יתאים למקרים של המילה "גיהנום" המסתיימים באות או מספר.

כדי לתקן זאת, אני יכול להשתמש בקבוצה ולכתוב מחדש את הקוד בתור Hell([A-z]|[0-9])+. כעת, הוא מחפש את המילה "גיהנום" ואחריה כל אות או מספר. ובגלל ש + מוחל על שני הסוגריים, זה יכול להיות כל שילוב של אותיות ומספרים, כל עוד יש לפחות אות או מספר אחד.

כפי שניתן לראות בצילום המסך למטה, קבוצה זו פותרת את הבעיה שלי מבלי לאחסן בהכרח את המידע בתוך אותה קבוצה:

עכשיו מה?

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

עכשיו כשאתה יודע את היסודות של ביטוי רגיל, אתה מוכן להתחיל להשתמש בו בקיצורי הדרך שלך! קיצורי דרך מקבלים קלט רגולרי בפעולות הבאות:

  • התאם טקסט
  • החלף טקסט

באמצעות שתי פעולות קיצורי דרך אלו, תוכל להוסיף ביטוי רגולרי לקיצורי הדרך שלך.

חבר את זה ליכולות האוטומציה של קיצורי דרך, ויש לך כלי די חזק לרשותך.

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

לדוגמה, נניח שאתה רוצה להתאים למיילים. אולי אתה צריך לבדוק שמחרוזת טקסט היא אימייל, או אולי אתה רוצה לשלוף אימייל(ים) מגוף הטקסט.

איך היית מפרק את זה?

ובכן, אתה יודע שהמבנה הבסיסי של הודעת דוא"ל יהיה שילוב כלשהו של אותיות, מספרים ותווים, ואחריו הסמל "@", ואז ואחריו שם של אתר כמו Gmail או iCloud, ואחריו מופיע ".com", ".org", או סוג אחר של רמה עליונה של שלושה תווים תְחוּם.

כדי לכתוב את זה ב-Regex, אתה צריך לציין שאתה רוצה מחרוזת באורך תו אחד לפחות שאחריה מיד על ידי הסמל "@", לאחר מכן מחרוזת נוספת של תו אחד לפחות, ואחריה ".", ולאחר מכן מחרוזת של שלושה דמויות. זה יראה כך:

[מוגן באימייל]+\..{3}

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

אתה יכול להשתמש בסוג זה של פתרון בעיות כדי להמציא פתרונות רגקס משלך או למצוא כמה שאחרים הכינו באינטרנט!

התחל להשתמש בביטוי רגיל עם קיצורי דרך כדי לקחת את האוטומציה שלך לשלב הבא

וזה, חברים, זה באמת. אני מקווה שנהניתם לעקוב אחרי המאמר הזה! זהו אחד הקטעים היותר שאפתניים שכתבתי אי פעם עבור AppleToolBox. הייתי צריך ללמד את עצמי regex כדי לכתוב את זה, ואני מקווה שבכך, הצלחתי לעזור לך ללמוד את זה.

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

למדריכים נוספים, מדריכים וחדשות על כל מה שקשור לאפל, עיין בשאר הבלוג AppleToolBox.

בְּסֵדֶר [A-Z][a-z]+, נתראה בפעם הבאה!