דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. רג'קס - איך לזהות חזרה על אותו תו?

רג'קס - איך לזהות חזרה על אותו תו?

מתוזמן נעוץ נעול הועבר תכנות
4 פוסטים 3 כותבים 121 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • צדיק תמיםצ מנותק
    צדיק תמיםצ מנותק
    צדיק תמים
    כתב ב נערך לאחרונה על ידי צדיק תמים
    #1

    אני מנסה ללכוד שאם אותו תו (במקרה הזה זה אותה אות בעברית) חוזרת על עצמה יותר מ-3 פעמים, להסיר את כל החזרות הנוספות מעבר ל3 הפעמים.
    עשיתי משהו כזה https://regex101.com/r/pqKLb0/1
    אבל זה מזהה כל 3 אותיות ברצף, לאו דווקא אם אותה אות חוזרת על עצמה...
    אשמח לעזרה..
    תודה!

    Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
    טיפים

    רפאלר תגובה 1 תגובה אחרונה
    0
    • רפאלר מנותק
      רפאלר מנותק
      רפאל
      השיב לצדיק תמים ב נערך לאחרונה על ידי רפאל
      #2
      string.replace(/([A-Z])(\1{2})\1+/g,'$1$2')
      

      הסבר בקצרה:

      בחירה

      1. ([א-ת]) הכנס תו בטווח של א-ת לתוך קבוצה $1
      2. ({2}1\) הכנס תווים הזהים לתו מהקבוצה הראשונה לתוך קבוצה $2, אם מופיעים פעמיים נוספות
      3. +1\ בחר את שאר ההופעות של התו מהקבוצה הראשונה

      החלפה

      1. $1$2 החלף את המחרוזת שנבחרה עם הקבוצה הראשונה והשנייה

       
      להלן דוגמא של הביטוי הנ"ל בRegex101

      dovidD תגובה 1 תגובה אחרונה
      6
      • dovidD מחובר
        dovidD מחובר
        dovid ניהול
        השיב לרפאל ב נערך לאחרונה על ידי dovid
        #3

        אני מפשט את התשובה של @רפאל (שיהיה קל להבין)

        string.replace(/([A-Z])\1\1\1+/g,  '$1$1$1')
        

        הקוד של רפאל אלגנטי וגנרי יותר, כי יש גמישות לשינוי מספר החזרות ומקום אחד בלבד לעדכן בקוד.

        אגב אפשר להתייחס לקבוצה של האות לפי שם, ואז יחד עם הפתרון של רפאל אנו יכולים לעטוף קבוצות נוספות (בלי חשבון איפה אוחזים) זה נראה ככה:

        string.replace(/((?<ot>[A-Z])\k<ot>{2})\k<ot>+/g,  '$1')
        

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        4
        • צדיק תמיםצ מנותק
          צדיק תמיםצ מנותק
          צדיק תמים
          כתב ב נערך לאחרונה על ידי
          #4

          יפה! לא הכרתי את האופציה הזו להשתמש בקבוצה בתוך הרג'קס עצמו...

          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
          טיפים

          תגובה 1 תגובה אחרונה
          0

          בא תתחבר לדף היומי!
          • התחברות

          • אין לך חשבון עדיין? הרשמה

          • התחברו או הירשמו כדי לחפש.
          • פוסט ראשון
            פוסט אחרון
          0
          • דף הבית
          • קטגוריות
          • פוסטים אחרונים
          • משתמשים
          • חיפוש
          • חוקי הפורום