עם טרמינל: שימוש בביטויים רגולריים

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

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

מהו ביטוי קבוע?

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

ביטויים רגולריים לעומת דפוסי קבצים.

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

סוגי ביטויים רגולריים.

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

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

בדיקת ביטויים רגולריים.

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

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

grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'

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

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

GREP_OPTIONS=--color

אנו יכולים להכניס אותו ל- .bashrc כדי להפעיל אותו תמיד.

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

sed -n[r] '/REGEX/p' FICHERO
COMANDO | sed -n[r] '/REGEX/p'

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

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

awk '/REGEX/' FICHERO
COMANDO | awk '/REGEX/'

פקודה זו משתמשת תמיד בביטויים רגולריים מורחבים.

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

- Lista de páginas wiki:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/

- Fechas de lanzamiento:

Arch Linux: 11-03-2002
Gentoo: 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10/2004

Desde Linux Rulez.

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

שיעור התחלה.

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

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

grep 'Linux' regex

ואנחנו יכולים לראות את התוצאה:

קשתלינוקס: https://wiki.archlinux.org/ Arch לינוקס: 11-03-2002 מאת לינוקס רולז.

אלה שלוש השורות המכילות את המילה "לינוקס" שאם השתמשנו בטריק הצבע, יופיעו מודגשות. שים לב שהוא מזהה את המילה אותה אנו מחפשים גם אם היא חלק ממילה ארוכה יותר כמו ב- "ArchLinux". עם זאת, היא אינה מדגישה את המילה "לינוקס" המופיעה בכתובת האתר "https://wiki.archlinux.org/". הסיבה לכך היא ששם הוא מופיע באותיות קטנות "l" וחיפשנו אותו באותיות רישיות. לפקודת grep יש אפשרויות לכך, אבל אני לא מתכוון לדבר עליהן במאמר העוסק בביטויים רגולריים.

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

  • דמות רגילה המוכנסת לביטוי קבוע תואמת את עצמה.

מה שאומר שאם תשים את האות "a" זה יחפש את האות "a". זה נראה הגיוני, נכון? 🙂

עכשיו נניח שאנחנו רוצים לחפש את המילה "CentO" ואחריה כל תו, אלא רק דמות אחת. לשם כך אנו יכולים להשתמש בתו ".", שהוא תו כללי התואם לכל דמות, אך רק לדמות אחת:

grep 'CentO.' regex

והתוצאה היא:

CentOS: http://wiki.centos.org/
סנטים: 14-05-2004 03:32:38

מה שאומר שהוא כולל את ה- "S" ב- "CentOS" אם כי במקרה אחד הוא באותיות רישיות ובקטנה אחרת. אם כל דמות אחרת הייתה מופיעה באותו מקום, היא תכלול אותה גם. יש לנו כבר את הכלל השני:

  • הדמות "." תואם כל דמות.

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

grep '200[24]' regex

מה שאומר שאנחנו רוצים למצוא את המספר 200 ואחריו 2 או 4. והתוצאה היא:

קשת לינוקס: 11-03-2002
ג'נטו: 31/03 /2002
CentOS: 14-05-2004 03:32:38
Ubuntu: 20/10/2004

מה שמביא אותנו לכלל השלישי:

  • מספר תווים המוגדרים בסוגריים תואמים לכל אחת מהתווים בסוגריים.

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

grep ':[^/]' regex

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

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Arch Linux: 11-03-2002 ג'נטו: 31/03/2002 CentOs: 14-05-2004 03:32:38 דביאן: 16/08/1993 אובונטו: 20/10/2004

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

  • הצבת התו "^" בתחילת סוגר תואמת לכל תו מלבד התווים האחרים בסוגריים.

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

grep '[0-9]-' regex

בעזרת זה אנו מציינים תו בין 0 ל 9 ואז סימן מינוס. בואו נראה את התוצאה:

קשת לינוקס: 11-03-2002 CentOs: 14-05-2004 03: 32: 38

ניתן לציין טווחים מרובים בסוגריים כדי לערבב טווחים עם תווים בודדים.

  • הצבת שתי תווים המופרדות על ידי "-" בסוגריים תואמת לכל תו בטווח.

בואו נראה עכשיו אם נוכל לבחור את החלק הראשון של כתובות ה- URL. זה שאומר "http" או "https". הם נבדלים רק ב"ס "הסופיים, אז בואו נעשה זאת באופן הבא:

grep -E 'https?' regex

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

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/Main_Page CentOS: http: //wiki.centos.org/ דביאן: https: //wiki.debian.org/ אובונטו: https: //wiki.ubuntu.com/

אז כבר יש לנו כלל חדש:

  • דמות ואחריה "?" תואם את הדמות הזו או אף לא אחת. זה תקף רק לביטויים רגולריים מורחבים.

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

grep -E 'Debian|Ubuntu' regex

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

דביאן: https://wiki.debian.org/
אובונטו: https://wiki.ubuntu.com/
דביאן: 16 / 08 / 1993
אובונטו: 20 / 10 / 2004
  • הדמות "|" משמש להפרדת ביטויים רגולריים מרובים ותואם לכל אחד מהם. זה ספציפי גם לביטויים רגולריים מורחבים.

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

grep '\

כאן הדמות החשובה היא "<", אך יש להימלט ממנה על ידי הצבת "\" לפניה כך ש grep יפרש אותה כדמות מיוחדת. התוצאה היא כדלקמן:

קשת לינוקס: 11-03-2002 מאת לינוקס רולז.

אתה יכול גם להשתמש ב "\>" כדי לחפש מילים שאינן ממש צמודות זו לזו. בוא נלך עם דוגמא. בואו ננסה פקודה זו:

grep 'http\>' regex

התפוקה שהיא מייצרת היא זו:

CentOS: http: //wiki.centos.org/

"Http" יצא, אך לא "https", מכיוון שב- "https" יש עדיין דמות מימין ל- "p" שיכולה להיות חלק ממילה.

  • התווים "<" ו- ">" תואמים את ההתחלה והסוף של מילה, בהתאמה. יש לברוח מדמויות אלה כדי שלא יתפרשו כדמויות מילוליות.

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

grep -E ':[0-9]+' regex

תוצאה:

CentOs: 14-05-2004 03: 32: 38

המספר 38 מודגש גם מכיוון שהוא מתחיל גם ב ":".

  • הדמות "+" תואמת את הדמות משמאלה, חוזרת על עצמה לפחות פעם אחת.

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

ראשית אנו מוצאים את כל הרצפים בארבע הספרות שיש:

grep '[0-9]\{4\}' regex

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

grep -E '[0-9]{4}' regex

והתוצאה בשני המקרים תהיה זו:

קשת לינוקס: 11-03-2002
ג'נטו: 31/03 /2002
CentOS: 14-05-2004 03:32:38
Debian: 16/08/1993
אובונטו: 20/10 /2004
  • התווים "{" ו- "}" עם מספר ביניהם תואמים את התו הקודם שחזרו על מספר הפעמים שצוין.

עכשיו הדוגמה האחרת עם הפלטה. נניח שאנחנו רוצים למצוא מילים הכוללות בין 3 ל -6 אותיות קטנות. נוכל לעשות את הפעולות הבאות:

grep '[a-z]\{3,6\}' regex

והתוצאה תהיה זו:

לista de דףs ויקי: לrchLinux: https:/ /ויקי.ארכינוס.org/ Gלאחר מכן: https:/ /ויקי.ג'נטו.org/ויקי/MAin_Pגיל
Cאף אוזן גרוןמערכת הפעלה: http:/ /ויקי.CentOS.org/ דebian: https:/ /ויקי.דביאן.org/ אובונטו: https:/ /ויקי.אובונטו.com/ - Fאתה מתגעגע de שחרור: לrch Linux: 11-03-2002 זלאחר מכן: 31/03/2002 גאף אוזן גרוןOs: 14-05-2004 03:32:38
Debian: 16/08/1993 יובונטו: 20/10/2004 דזה Linux RUlez.

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

grep '\<[a-z]\{3,6\}\>' regex

תוצאה:

- רשימת עמודים ויקי: ArchLinux: https:/ /ויקיarchlinux.org/ ג'נטו: https:/ /ויקי.ג'נטו.org/ויקי/ Main_Page CentOS: http:/ /ויקי.CentOS.org/ דביאן: https:/ /ויקי.דביאן.org/ אובונטו: https:/ /ויקי.אובונטו.com/

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

  • התווים "{" ו- "}" עם שני מספרים ביניהם המופרדים בפסיק תואמים את התו הקודם חזרו על מספר הפעמים שצוינו על ידי שני המספרים.

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

grep 'wiki.*org' regex

בואו נראה את התוצאה:

ArchLinux: https: //wiki.archlinux.org/ ג'נטו: https: //wiki.gentoo.org/ wiki / Main_Page CentOS: http: //wiki.centos.org/ דביאן: https: //wiki.debian.org/

פרפקטו.

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

grep '.$' regex

התוצאה אינה מה שאנחנו מחפשים:

- רשימת דפי ויקי:
ArchLinux: https://wiki.archlinux.org/
ג'נטו: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
דביאן: https://wiki.debian.org/
אובונטו: https://wiki.ubuntu.com/
- תאריכי יציאה: Arch Linux: 11-03-2002
ג'נטו: 31/03/2002
CentOs: 14-05-2004 03:32:38
דביאן: 163
אובונטו: 20/10/2004
Desde Linux רולז.

הסיבה לכך היא שה- "." תואם כל דבר, כך שהביטוי הרגיל תואם את התו האחרון של כל שורה באשר הוא. הפיתרון הוא זה:

grep '\.$' regex

עכשיו התוצאה היא מה שאנחנו רוצים:

Desde Linux רולז.

המשחק נגמר

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

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


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   Ezequiel דיג'ו

    מה היו חיינו ללא ה- regex?
    המאמר מאוד שימושי, אבל אקרא אותו לאט לאט. תודה רבה.

    1.    הקסבורג דיג'ו

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

  2.   סקאליבור דיג'ו

    תודה youssssssss! ..

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

    טוב מאוד! .. .. אני אקבל את האספירין הזה .. ee

    1.    הקסבורג דיג'ו

      בבקשה. אומץ ושביטויים קבועים לא יכולים להיות איתך. 🙂

  3.   טנרקס דיג'ו

    פוסט פנטסטי! עבודה טובה. מעניין כמה שעות לקח לך 😀

    1.    הקסבורג דיג'ו

      לצחוק בקול רם!! השאלה היא: כמה שעות היה לוקח לי אם הייתי אומר את כל מה שהתכוונתי לומר? אינסופי !! 🙂

  4.   תמוז דיג'ו

    דבר אחד שלא ידעתי, מאמר טוב!

    1.    הקסבורג דיג'ו

      תודה. תענוג לשתף אתכם בזה.

  5.   helena_ryuu דיג'ו

    הסבר נהדר. מזל טוב! ממש שימושי!

    1.    הקסבורג דיג'ו

      אני שמח שמצאת את זה מועיל. אז תענוג לכתוב.

  6.   אנטי דיג'ו

    זה צריך ללכת למקום מיוחד. כמו ה- Featured אך יש להם תועלת מאוד ספציפית. די שימושי, אם כי הייתי רוצה לראות את זה מוחל על Vim.

    1.    הקסבורג דיג'ו

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

  7.   פרננדו דיג'ו

    טוֹב!

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

    אם מדובר בנחמה כלשהי, שלי הוא הרבה יותר דחוף 😀

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

    ברכות ועבודה טובה מאוד מאוד.

    1.    הקסבורג דיג'ו

      תודה רבה.

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

  8.   אלרי דיג'ו

    ביטויים רגולריים לדומיות =), עכשיו ברור לי יותר, דרך אגב אחת הדרכים לקבל את הפלט עם צבע עבור grep, היא על ידי יצירת כינוי ב- .bashrc alias grep = 'grep –color = always', למקרה זה עובד עבור מישהו.

    לגבי

    1.    הקסבורג דיג'ו

      נָכוֹן. זו דרך נוספת לעשות זאת. תודה על הקלט. 🙂

  9.   KZKG ^ גאארה דיג'ו

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

    תודה על המאמר, אני באמת כן 😀

    1.    הקסבורג דיג'ו

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

  10.   אליאצר טאטס דיג'ו

    מאמר נהדר, אם רק הייתי קורא אותו אתמול, השיעור שנתתי היום היה קל עוד יותר לתלמידים שלי!

    1.    הקסבורג דיג'ו

      לצחוק בקול רם!! חבל שאיחרתי, אבל שמח שזה שימושי. 🙂

  11.   ליאו טורו דיג'ו

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

    1.    הקסבורג דיג'ו

      יש הרבה מידע שם בחוץ, אבל קשה יותר למצוא משהו שקל להבין. אני שמח שמילאתי ​​את הפער הזה. 🙂

      ברכות.

  12.   שייקספיר רודס דיג'ו

    היי אני צריך עזרה, אני צריך לעשות חיפוש ב- / var / logs עם הפורמט: yymmdd, והיומנים מגיעים כמו 130901.log -130901.log, אני צריך לחפש את כל אלה שנמצאים בין ה -1 בספטמבר ל -11 באוקטובר , הדבר היחיד שהצלחתי לעשות היה להסיר את כל ספטמבר, אבל אני לא יודע לעשות את השרשרת השלמה:

    לדוגמה: 1309 [0-3] מחזיר לי את היומנים בין ה -1 בספטמבר ל -30 בספטמבר, אבל אני לא יודע איך להגיע גם לאותה שרשרת בין התאריכים 1 ל -11 באוקטובר.

    1.    הקסבורג דיג'ו

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

      13(09[0-3]|10(0|1[01]))

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

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

      למצוא. -ניוורמט '01 ספט '- א! -טביעת 'אוקטובר 11' חדש

      מַזָל. מקווה שזה יכול לעזור לך.

  13.   צ'יפו דיג'ו

    שלום! ראשית רציתי להודות לך על עבודתך מכיוון שדף זה נמצא ב"שלושת הראשונים "שלי באתרי לינוקס הטובים ביותר.
    התאמנתי ולא ידעתי מדוע RegExp על מספר טלפון לא עובד בשבילי וזה היה חסר לי ה- "E" (שהבנתי בזכות פוסט זה).
    רציתי לשאול אותך אם אינך מכיר שום קובץ PDF טוב או אתר טוב שבו ישנם תרגילים ב- RegExp, אם כי עם מעט דמיון תוכל לתרגל להמציא אותם בעצמך.

    ברכות, פבלו.

  14.   קאלי דיג'ו

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

  15.   אוסקר דיג'ו

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

    ברכה.

  16.   אלכסדר דיג'ו

    אהבתי מאוד הסבר טוב מאוד