הדגל U ברגקס
-
@dovid אמר בRegex - ביטויים רגולריים:
Ungreedy
תודה על המדריך המעולה, אני משתמש בו כל הזמן.
האם הדגל U - Ungreedy עובד בJS?
עושה לי רושם שלא
וגם להשתמש במקום במציין כימות לא הולך ליאני מנסה "לבודד" את כל ה"דיבור המתחיל ברש"י". למשל:
מתני'. השותפין שחלקו וכו'
נתיאש הימנה ולא גדרה. דוקא נתיאש וכו'אז השתמשי ברגקס הבא באמצעות הבדיקה כאן:
/^(.+)\./gmU
אבל בJS הוא לא זיהה את ה U
אז במקום זה ניסיתי:
^(.+)\.+?
וזה לא עבד, זה תפס יותר מידי. הנה.
-
אכן המציין U לא קיים בJS. אבל הסימן ? אחרי מציין כמות כן עובד באופן דומה.
אתה מחפש רצף שתחילתו תחילת השורה, וסופו נקודה.
אז בשביל התחילת שורה, כפי שעשית ^.
כעת הקבוצה בסוגריים היא תו כל שהוא אחד או יותר אבל המינימום האפשרי כל עוד התוצאה תתאים. לכן פה, אחרי הפלוס, יש לשים סימן שאלה - זה ממעט את חמדנותו של הפלוס. אחרי הסוריים נקודה, ללא סימן שאלה או פלוס.^(.+?)\.
https://regex101.com/r/Y4n2IB/1
יש דרך אחרת, שיכולה להתאים פה: במקום לדכא את החמדנות של ה+, פשוט לאפשר כל סימן מלבד הנקודה:
^[^\.\n]+
זה אפילו חוסך לך את הסוגריים, שהרי הנקודה לא כלולה.
אבל זה ימצא גם שורות בהם אין בכלל נקודה, אם זה ייתכן ולא רצוי, אז חייבים ציון נקודה וגם סוגריים:^([^\.\n]+)\.