Es lässt mir dann doch einfach keine Ruhe...
Code: Alles auswählen
In [210]: calculation = '(34-3) + funktion(5) + (2*x) -4 / bla(34)'
In [211]: re.findall(expr, calculation)
Out[211]:
[('', '', '', ''),
('', '', '', ''),
('', '', '', ''),
('', '', '-', '3'),
('', '', '', ''),
('', '', '', ''),
('', '', '+', ''),
('', '', '', ''),
('funktion', '', '', ''),
('', '', '', ''),
('', '5', '', ''),
('', '', '', ''),
('', '', '', ''),
('', '', '+', ''),
('', '', '', ''),
('', '', '', ''),
('', '', '', ''),
('', '', '*', 'x'),
('', '', '', ''),
('', '', '', ''),
('', '', '-', '4'),
('', '', '', ''),
('', '', '/', ''),
('', '', '', ''),
('bla', '', '', ''),
('', '', '', ''),
('', '34', '', ''),
('', '', '', ''),
('', '', '', '')]
Dabei werden jetzt allerdings noch keine Klammern, die zusammengehörende Operationen umschließen, berücksichtigt. Zudem werden Funktionsnamen, die z. B. mit einem '+' beginnen als Konstanten erkannt.
Sch... regular expressions....