מחרוזות לחיפוש באינדיזיין // שיעור 2 בגרפ

על ידי

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

חיפוש טקסט שנמצא בין הסוגריים

\(.+?\)

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

אחריו מגיע ( שזה הסוגר הפותח אותו אנו מחפשים.

אחריו מגיע . נקודה זו מסמלת כל תו מכל סוג (תו טקסט, מספור, פיסוק וכן הלאה).

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

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

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

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

אז מה היה לנו: סוגר פותח \( כל תו. כמה שיותר פעמים + אך מוגבל ? לסוגר ה\)

חיפוש מילים כפולות

(\<.+?\> ?)\1

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

בתוך הקבוצה, נתמקם במיקום של בתחילת מילה \<

אחריו נחפש .+? כל תו, כמה שיותר פעמים, מוגבל למיקום של סוף מילה \>

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

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

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

חיפוש פסקאות כפולות

(^.+\r)\1

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

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

לאחריו נחפש \r אנטר, סוף פסקה. ואחרי זה נחזור ומחפש שוב את אותו קבוצה בדיוק באמצעות \1

עיצוב טקסט שמגיע מקלדן

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

נשתמש בטקסט דמה להקל על ההסבר:

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

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

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

(@1)(.+?)(@2)

התחלנו עם קבוצה. בקבוצה ראשונה הכנסנו @1. בקבוצה השניה חיפשנו .+? כל תו, כמה שיותר פעמים, עם הגבלה למה שנמצא בקבוצה השניה, וזה ה@2.

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

החלפת סדר הטקסטים

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

(עומר )(יום )([א-מ]{1,2})

והחלפה ב:

$2$1 ל$3

שימו לב: הסדר התהפך. קחו והעתיקו או קראו את ההסבר על החיפוש: גם הפעם השתמשנו בקבוצות. בקבוצה הראשונה הכנסנו את (עומר ) עם הרווח שלו, בקבוצה השניה את (יום ), בקבוצה השלישית חיפשנו תו בין אותיות [א-מ] שזה אומר או אות א’ או ב’ או ג’ וכו’. לאחר מכן חזרנו על אותו פעולה {1,2} והגדרנו שיחפש את התו הזה בין פעם אחד לפעמיים.

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

חיפושים מתקדמים יותר, בפוסט הבא.

ללא תגיות

רוצה להגיב הראשון?

מה אתה חושב?

האימייל לא יוצג באתר. שדות החובה מסומנים *