Получить арифметические операторы и два числа после него
Необходимо получить все совпадения по арифметическому оператору (- + * /) и двум числам после него(в числах может присутствовать e-). К примеру есть строка:
+ / + -2 2 -2 / - 3 2 + 1 0 / -18733.675923168783e-7 3512411.820180601
Из нее необходимо получить:
+ -2 2 , - 3 2, + 1 0, / -18733.675923168783e-7 3512411.820180601
Есть такой код:
/[+*-\/] \-?[\d.e-]+ \-?[\d.e-]+/g
Но он вытаскивает:
+ -2 2 , / - 3, + 1 0, / -18733.675923168783e-7 3512411.820180601
Как можно это исправить?
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Используйте
/[+*\/-]\s+-?\d*\.?\d+(?:e[+-]?\d+)?\s+-?\d*\.?\d+(?:e[+-]?\d+)?/gi
См. пример работы регулярного выражения. Подробности:
[+*\/-]- один из символов+,*,/или-\s+- один и более пробельных символов-?- необязательный символ-\d*\.?\d+- ноль и более цифр, необязательная точка.и одна и более цифр(?:e[+-]?\d+)?- необязательная последовательность:е, необязательный+или-, одна и более цифр\s+-?\d*\.?\d+(?:e[+-]?\d+)?- то же, что и выше.
См. пример работы JavaScript-кода:
const text = '+ / + -2 2 -2 / - 3 2 + 1 0 / -18733.675923168783e-7 3512411.820180601';
const regex = /[+*\/-]\s+-?\d*\.?\d+(?:e[+-]?\d+)?\s+-?\d*\.?\d+(?:e[+-]?\d+)?/gi;
console.log(text.match(regex));