Вы можете разделить на +
или -
, которому предшествуют буква, цифра и потенциально другие элементы, которые приемлемы в ваших выражениях (например, в скобках). Вы можете использовать оглядываясь назад для достижения этой цели.
Например, в Python вы можете сделать это так:
>>> import re
>>> re.split('(?<=[a-zA-Z0-9)])[+-]', '-a+10*x-2*y+(-2)-b')
['-a', '10*x', '2*y', '(-2)', 'b']
Это разбивается на каждый +
или -
, которому не предшествует ни маленькая, ни заглавная буква, ни цифра, ни закрывающая скобка. Возможно, вам придется настроить это в зависимости от ваших точных характеристик того, что составляет «математическое выражение».
Это или подобное регулярное выражение должно работать в других движках регулярных выражений.