רג'קס - איך לזהות חזרה על אותו תו?
-
אני מנסה ללכוד שאם אותו תו (במקרה הזה זה אותה אות בעברית) חוזרת על עצמה יותר מ-3 פעמים, להסיר את כל החזרות הנוספות מעבר ל3 הפעמים.
עשיתי משהו כזה https://regex101.com/r/pqKLb0/1
אבל זה מזהה כל 3 אותיות ברצף, לאו דווקא אם אותה אות חוזרת על עצמה...
אשמח לעזרה..
תודה! -
אני מנסה ללכוד שאם אותו תו (במקרה הזה זה אותה אות בעברית) חוזרת על עצמה יותר מ-3 פעמים, להסיר את כל החזרות הנוספות מעבר ל3 הפעמים.
עשיתי משהו כזה https://regex101.com/r/pqKLb0/1
אבל זה מזהה כל 3 אותיות ברצף, לאו דווקא אם אותה אות חוזרת על עצמה...
אשמח לעזרה..
תודה!string.replace(/([A-Z])(\1{2})\1+/g,'$1$2')הסבר בקצרה:
בחירה
([א-ת])הכנס תו בטווח של א-ת לתוך קבוצה$1({2}1\)הכנס תווים הזהים לתו מהקבוצה הראשונה לתוך קבוצה$2, אם מופיעים פעמיים נוספות+1\בחר את שאר ההופעות של התו מהקבוצה הראשונה
החלפה
$1$2החלף את המחרוזת שנבחרה עם הקבוצה הראשונה והשנייה
-
string.replace(/([A-Z])(\1{2})\1+/g,'$1$2')הסבר בקצרה:
בחירה
([א-ת])הכנס תו בטווח של א-ת לתוך קבוצה$1({2}1\)הכנס תווים הזהים לתו מהקבוצה הראשונה לתוך קבוצה$2, אם מופיעים פעמיים נוספות+1\בחר את שאר ההופעות של התו מהקבוצה הראשונה
החלפה
$1$2החלף את המחרוזת שנבחרה עם הקבוצה הראשונה והשנייה
אני מפשט את התשובה של @רפאל (שיהיה קל להבין)
string.replace(/([A-Z])\1\1\1+/g, '$1$1$1')הקוד של רפאל אלגנטי וגנרי יותר, כי יש גמישות לשינוי מספר החזרות ומקום אחד בלבד לעדכן בקוד.
אגב אפשר להתייחס לקבוצה של האות לפי שם, ואז יחד עם הפתרון של רפאל אנו יכולים לעטוף קבוצות נוספות (בלי חשבון איפה אוחזים) זה נראה ככה:
string.replace(/((?<ot>[A-Z])\k<ot>{2})\k<ot>+/g, '$1')
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות