פורסם 2010 במאי 215 שנים היי,אני מעוניין לבנות ביטוי regex שיוכל לזהות סוגריים חיצוניים.הכוונה, בהינתם הביטוי הבא:5 + ( 2 + 3 + ( 5 - 2 ) + 3 ) + (2 - 5)אני רוצה שהוא יוכל להביא לי את( 2 + 3 + ( 5 - 2 ) + 3 )(2 - 5)מספר אנשים אמרו לי שזה לא אפשרי בגלל שregex לא יכול לספור סוגריים, חיפשתי קצת באינטרנט אבל לא מצאתי על זה מידע.זה אפשרי? למישהו יש רעיון?זה צריך להיות דרך אגב regex בגאווה.עריכה - כמובן שאין לי מושג לגבי המבנה בתוך הסוגריים, יכול להיות עוד אלף סוגריים שנפתחים ונסגרים בפנים.
פורסם 2010 במאי 215 שנים תיאורטית, אי אפשר לעשות את זה עם regex (בכלליות, regex לא יכול "לספור" ללא הגבלה, כלומר אפשר לספור איתו רק אם אתה יודע מראש שמה שאתה סופר מוגבל מראש לכמות מסויימת). לומדים את זה בערך בשיעור שלישי של הקורס "מודלים חישוביים" מעשית, כיון שאתה יכול להניח שמספר הסוגריים בביטוי שלך מספיק הוא כן קטן מקבוע סופי כלשהו (אפילו מספיק להניח ש"עומק" הסוגריים שלך הוא קטן מקבוע כלשהו) אז כן אפשר לבנות ביטוי רגולרי ממש מסורבל שמקבל את המחרוזת, אבל זה לא מומלץ.
פורסם 2010 במאי 215 שנים מחבר תיאורטית, אי אפשר לעשות את זה עם regex (בכלליות, regex לא יכול "לספור" ללא הגבלה, כלומר אפשר לספור איתו רק אם אתה יודע מראש שמה שאתה סופר מוגבל מראש לכמות מסויימת). לומדים את זה בערך בשיעור שלישי של הקורס "מודלים חישוביים" מעשית, כיון שאתה יכול להניח שמספר הסוגריים בביטוי שלך מספיק הוא כן קטן מקבוע סופי כלשהו (אפילו מספיק להניח ש"עומק" הסוגריים שלך הוא קטן מקבוע כלשהו) אז כן אפשר לבנות ביטוי רגולרי ממש מסורבל שמקבל את המחרוזת, אבל זה לא מומלץ. תודה! לא מומלץ, לא יפה ויורידו לי על זה נקודות נאלץ לעבוד מהסוגריים הפניימים החוצה במקום מהחיצונים פנימה -> אפילו שזה קצת הורס את הרקורסיה שתכננתי... מודלים חישוביים אין לי (לפחות בינתיים).
פורסם 2010 במאי 715 שנים אני אנסה לנצל את האשכול הזה למען מטרה מאוד דומה.איך ניתן לתפוס את הסוגריים הכי פנימיים?כלומר אלו שאינם מכילים סוגריים בתוך עצמם..לדוגמה עבור (1 + (3 + 5) - 2)את (3 + 5) ?
פורסם 2010 במאי 715 שנים את זה דווקא אפשר לעשות בביטוי רגולרי מאוד פשוט:\([^\(\)]*\)זה קצת קשה להבנה בגלל שצריך לעשות הרבה escaping, אבל בגדול זה מציין מחרוזת שמתחילה ומסתיימת בסוגריים, ומכילה באמצע רק תווים שאינם סוגריים.
פורסם 2010 במאי 715 שנים תודה! אם תרשה לי להציע תיקון קל, למען שימור הידע.. צריך 2 \\ כי \ אחד מתייחס כ \ של ג'אווה ולא של REGEX.
פורסם 2010 במאי 715 שנים בסדר, זה כבר עניין של שפת התכנות, בלי קשר לביטויים רגולרים. הרי גם לא שמתי מרכאות.ב-#C לדוגמה אפשר לעשות ככה:@"\([^\(\)]*\)"
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.