רג'קס להסרת גרשיים מטקסט מלבד ר"ת
-
אני רוצה להסיר גרשיים (") מטקסט מסויים, אבל רק כשהגרשיים בודדות או נמצאות בתחילת או בסוף מילה, אבל גרשיים של ר"ת, באמצע מילה, אני רוצה להשאיר
ניסיתי,
const text = '"חבר" חב"ר "שלום"'; const removeGershiimAll = text.replace(/"|>|</g, ''); const removeGershiim = text.replace(/\b"|"|\b/g, '');
כמובן שהראשון מסיר את הכל, אבל הבעיה שגם השני..
אני בעצם רוצה שהתוצאה של removeGershiim תהיה
חבר חב"ר שלום
-
/(?<=[א-ת])"(?![א-ת])|(?<![א-ת])"(?=[א-ת])|(?<=\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 -
אינני בקי ברגקס של JS
אבל ב-C# הייתי עושה כך:^"|"$|" | "
ההחלפה קצת יותר מורכבת כי אתה צריך להיזהר לא להחליף את הרווח. ולכן ייתכן שה-lookahead וה-lookbehind עדיף במקרה הזה כמו שצדיק תמים כתב
https://regex101.com/r/CajTc0/1 -