Mathe-Ausdruck mit regulärem Ausdruck verbinden?

Zum Beispiel sind dies gültige mathematische Ausdrücke:

a * b + c
-a * (b / 1.50)
(apple + (-0.5)) * (boy - 1)

Und dies sind ungültige mathematische Ausdrücke:

--a *+ b @ 1.5.0  // two consecutive signs, two consecutive operators, invalid operator, invalid number
-a * b + 1)  // unmatched parentheses
a) * (b + c) / (d  // unmatched parentheses

Ich habe kein Problem mit der Zuordnung von Gleitkommazahlen, aber Probleme mit der Zuordnung von Klammern. Irgendeine Idee? Wenn es eine bessere Lösung als reguläre Ausdrücke gibt, akzeptiere ich das auch. Aber Regex wird bevorzugt.

========

Bearbeiten

Ich möchte einige Kommentare zu meiner Wahl der "akzeptierten Antwort" abgeben, in der Hoffnung, dass Leute, die die gleiche Frage haben und diesen Thread finden, nicht irregeführt werden.

Es gibt mehrere Antworten, die ich als "akzeptiert" betrachte, aber ich habe keine Ahnung, welche die beste ist. Also habe ich die akzeptierte Antwort (fast) zufällig gewählt. Ich empfehle, neben der akzeptierten Antwort auch die Antwort von Guillaume Malartre zu lesen. Alle geben praktische Lösungen für meine Frage. Für eine etwas rigorose / theoretische Antwort lesen Sie bitte die Kommentare von David Thornley unter der akzeptierten Antwort. Perls Erweiterung auf reguläre Ausdrücke (die aus der regulären Sprache stammen) macht es, wie er sagte, „unregelmäßig“. (Ich erwähnte keine Sprache in meiner Frage, daher nahmen die meisten Antwortenden die Perl-Implementierung von regulären Ausdrücken an - wahrscheinlich die beliebteste Implementierung. Dies tat ich auch, als ich meine Frage veröffentlichte.)

Bitte korrigieren Sie mich, wenn ich oben etwas Falsches gesagt habe.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage