Имеется строка, например такая:
5+1/2*(2+5*2- 14))*1200
Я составил регулярное выражение:
(?<=\D)(?=\d|\D)|(?<=\d|\D)(?=\D)
Оно разбивает данную строку на числа, скобки и арифметические знаки операций. В результате получаем:
Найдено математическое выражение: [(-5+1/2*(2+5*2- --j))*1200]
Символ: [(]
Символ: [5]
Символ: [+]
Символ: [1]
Символ: [/]
Символ: [2]
Символ: [*]
Символ: [(]
Символ: [2]
Символ: [+]
Символ: [5]
Символ: [*]
Символ: [2]
Символ: [-]
Символ: [14]
Символ: [)]
Символ: [)]
Символ: [*]
Символ: [1200]
Но оно до конца не выполняет задуманного. Вот если число будет со знаком (-5, например), мне нужно этот самый знак тоже включить в символ, чтобы получилось так:
-5+1/2*(2+5*2-14))*1200
и на выходе было:
Символ: [(]
Символ: [-5] <- СМОТРИ СЮДА, ТУТ ЧИСЛО СО ЗНАКОМ, НЕЛЬЗЯ ОТДЕЛЯТЬ ЗНАК ОТ ЧИСЛА
Символ: [+]
Символ: [1]
Символ: [/]
Символ: [2]
Символ: [*]
Символ: [(]
Символ: [2]
Символ: [+]
Символ: [5]
Символ: [*]
Символ: [2]
Символ: [-]
Символ: [14]
Символ: [)]
Символ: [)]
Символ: [*]
Символ: [1200]