רג'קס להסרת גרשיים מטקסט מלבד ר"ת
-
אני רוצה להסיר גרשיים (") מטקסט מסויים, אבל רק כשהגרשיים בודדות או נמצאות בתחילת או בסוף מילה, אבל גרשיים של ר"ת, באמצע מילה, אני רוצה להשאיר
ניסיתי,
const text = '"חבר" חב"ר "שלום"'; const removeGershiimAll = text.replace(/"|>|</g, ''); const removeGershiim = text.replace(/\b"|"|\b/g, ''); כמובן שהראשון מסיר את הכל, אבל הבעיה שגם השני..
אני בעצם רוצה שהתוצאה של removeGershiim תהיה
חבר חב"ר שלום
-
צדיק תמיםהשיב לאביי ב 3 ביולי 2024, 21:20 נערך לאחרונה על ידי צדיק תמים 7 במרץ 2024, 21:45
/(?<=[א-ת])"(?![א-ת])|(?<![א-ת])"(?=[א-ת])|(?<=\s)"(?=\s)/gs הביטוי הזה מחפש:
- יש לִפְנֵי (positive lookbehind) אות בעברית, מירכאות, אין אַחֲרֵי (negative lookahead) אות בעברית
או
- אין לִפְנֵי (negative lookbehind) אות בעברית, מירכאות, יש אַחֲרֵי (positive lookahead) אות בעברית
או
- יש לִפְנֵי (positive lookbehind) רווח, מירכאות, יש אַחֲרֵי (positive lookahead) רווח
מראי מקומות:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookahead_assertion -
pcinfogmachהשיב לאביי ב 3 ביולי 2024, 22:39 נערך לאחרונה על ידי pcinfogmach 7 במרץ 2024, 22:42
אינני בקי ברגקס של JS
אבל ב-C# הייתי עושה כך:^"|"$|" | "
ההחלפה קצת יותר מורכבת כי אתה צריך להיזהר לא להחליף את הרווח. ולכן ייתכן שה-lookahead וה-lookbehind עדיף במקרה הזה כמו שצדיק תמים כתב
https://regex101.com/r/CajTc0/1 -
כולם אמרו פה דברים נכונים, אבל אפשר גם ככה:
text.replace(/(?:(\s|^)"|"(\s|$))/g, '$1$2');
או:
text.replace(/((\s|^)"|"(\s|$))/g, '$2$3');
כלומר כמו ש@pcinfogmach רצה אבל עם לכידה של הרווח אם ישנו (משני הקבוצות האפשריות) והשארתו במחרוזת המוחלפת.
-
מצרף את תשובתו של GPT שהולכת בדרכו של @צדיק-תמים:
text.replace(/(?<=\s|^)\"|\"(?=\s|$)/g, '');
4/6