Если вы измените квантификатор по коэффициенту с +
(один или несколько) на *
(ноль или более) , то вы должны получить результат, который вы после,Вы также получите пустое совпадение строки, поскольку все квантификаторы теперь равны *
, но вы можете отфильтровать это совпадение.
>>> import re
>>> e1 = "2x=4+3y"
>>> e2 = "2=x+3y"
>>> re.findall("([+-]*)([0-9]*)([a-z]*)([<=>]*)", e1)
[('', '2', 'x', '='), ('', '4', '', ''), ('+', '3', 'y', ''), ('', '', '', '')]
>>> re.findall("([+-]*)([0-9]*)([a-z]*)([<=>]*)", e2)
[('', '2', '', '='), ('', '', 'x', ''), ('+', '3', 'y', ''), ('', '', '', '')]
Примечание: хотя это решает ваш прямой вопрос, это не очень хороший подход к анализу инфиксных уравнений.