C# regex להתעלם מכל תו לבן או רווח
-
יש לי קובץ טקסט שאני טוען אותו לזיכרון ומתחיל לחפש בו כל מיני מחרוזות.
הבעיה היא שכל פעם שהוא פוגש סוף פסקה או מעבר שורה, הוא מפסיק את החיפוש.
למשל אני רוצה לחפש כל רצף תווים כזה @# שנמצא בין ! ל %.
אני משתמש כעת בריגקס הבא:![^#]{0,}?(#@).+?%
אני חושב שצריך להכניס איזה התעלמות מכל מעבר שורה אחרי זה, כלומר מעבר שורה אופציונאלי, אבל זה לא עובד, כזה:
![^#]{0,}?(#@)\r?.+?%
אפה הטעות שלי? והאם באמת \r אמור לתת לי את האופציה הזו. האם יש משהו יותר טוב שיקח בחשבון את כל הרווחים הלבנים והטאבים וכו' ויתעלם מהם לחלוטין? ולמה זה בכלל לא נכלל במה שכתבתי לו . שפרושו כל תו?
פורסם במקור בפורום CODE613 ב13/08/2017 14:59 (+03:00)
-
אולי יועיל לך
[#C]מדריך לביטויים רגולריים - FXP.PDFפורסם במקור בפורום CODE613 ב13/08/2017 15:20 (+03:00)
-
תודה רבה! זה ממש מכסה הרבה מregex/
נסיתי את מה שכתוב שם ש \s שקול לכל רווח לבן, וכן ל\r\t\f\n והיה נראה שזה בדיוק מה שחפשתי.
אבל למעשה, כאשר אני מחפשגם את זה, הוא באמת מוצא גם את הרווח.
אבל כאשר אני מחפש אופיונאלי, הוא לא נותן את כל המחרוזת.פורסם במקור בפורום CODE613 ב13/08/2017 15:31 (+03:00)
-
כי בטקסט שלך השבירת שורה הייתה מורכבת גם מnew-line ולא רק carier-return.
אם היית כותב![^#]{0,}?(#@)\n\r?.+?%
זה היה עובד לך אבל זה אריכות. המשמעות של + היא "אחד או יותר": ההתאמה שצויינה קודם חייבת להימצאות לפחות פעם אחת אבל יכולה להיות גם יותר. בעוד * אומר "אפס או יותר". ממילא זה מייתר את הסימן שאלה.
פורסם במקור בפורום CODE613 ב13/08/2017 16:10 (+03:00)