עזרה regex שלילת מחרוזת מלאה ולא רק תווים בה
-
יש לי את הרגקס הזה כאן
הענין הוא שאני רוצה שהוא יתפוס מחרוזת שלפניה יש מחרוזת אחת ואחריה יש מחרוזת אחרת, אבל רק את "האמצע" ולא את כולה. את זה עושים על ידי חיפוש מאחור חיובי ושלילי. כלומר לחפש מחרוזת כזו שעונה על תנאים כאלה שלפניה יש את זה ואחריה יש את זה.
העינן הוא, שכאשר אני משתמש בזה, הוא שולל או מחייב את כל התווים הנמצאים במחרוזת שאותה שמתי לחיפוש, ולא את המחרוזת עצמה.
לדוגמא - אם אעשה כך (?<![(@20)])שפרושו - תמצא לי מחרוזת שלפניה אין @20, הוא באמת מוצא מחרוזת שאין לפניה לא @ לא 2 ולא 0.
הוא לא מתיחס לזה כאל קבוצה למרות ששמתי לו את הסגרים האלה שאומרות לו מפורש שיחשוב שזה קבוצה.איך אומרים לו שיחשוב שזה קבוצה גם בשלילה של דבר מסוים?
לאחר ההסרה של הסוגרים המרובעות שם, הכל בא על מקומו בשלום, פשוט הדוגמא שראיתי היתה עם סוגריים כאלה וחשבתי שהם חלק מהביטוי של חיפוש חיובי או שלישי והתבדתי, שבאמת הסוגריים המרובעות הנל לא חיבות להיות שם. וכעת זה עובד.
אך שאלה עיונית עדיין נשארה באוויר, הרי סוגריים מרובעות אומרות שכל תו שנמצא שם, ואילו כאן במקרה דנן היתה קבוצה תחומה על ידי סוגריים עגולות ומדוע הוא לא זיהה את זה כאילו השלילה היא על קבוצה מסוימת. ואם למשל הייתי רוצה לחפש אחורה חיובי על שני קבוצות, מי לא הייתי משתמש בסוגריים מרובעות ובתוכם שני הקבוצות ולהאמור לעיל אינו כן וצ"ע טובא.
פורסם במקור בפורום CODE613 ב07/10/2017 22:27 (+03:00)
-
חידשת לי את המושג Lookahead, לא הכרתי אותו. די הסתבכתי איך הבנת איך הוא פועל כי רק עכשיו אני הבנתי.
לגבי השאלה שלך, סוגריים מרובעות = כל תו שבתוכם. תעטוף במאה סוגריים, והוא אכן יזהה כקבוצה, אבל מה הקבוצה? ההתאמה לאחד מהתוים שבסוגריים המורבעות.
אם אתה צריך התאמה לאחת משתי קובצות על כרחך אין להשתמש בסוגריים מרובעות כי מניין לו אם כוונתך אחד מהתוים או כלל ההתאמה? אלא יש להשתמש בצינור | מוקף בסוגריים:
https://regex101.com/r/MScVoq/1פורסם במקור בפורום CODE613 ב13/10/2017 14:32 (+03:00)