Ich habe ein Rätsel, ich muss eine mögliche abwechslungsreiche mathematische Zeichenfolge in separate Entitäten trennen, um in einer ArrayList zu speichern.Java Reguläre Ausdrücke mit Math-Operatoren
Der Eingang kann von einem Scanner gelesen werden. Dies kann einer der folgenden Punkte sein.
Scanner input = new Scanner(System.in);
String read = input.nextLine();
ArrayList al = new ArrayList();
-5 + 10 //possible value of read
9--5 //possible value of read
-20* 10 //possible value of read
Grundsätzlich ich brauche die erste Zahl und eine mögliche negative Vorzeichen, alle ignorieren führende oder nachfolgende Leerzeichen und speichern sie greifen, dann auf das nächste Zeichen Leerzeichen ignoriert und speichern sie (der Betreiber des Problems), und dann die nächste Zahl mit einem optionalen negativen Vorzeichen, wobei Whitespace wieder ignoriert wird.
Ich bin nicht sehr gut mit Regex, und es gibt eine Menge komplizierter Möglichkeiten hier, dass ich nicht weiß, wie man anpackt.
Wenn ich es zu legen hatte logisch aus, würde ich es sagen so:
Erhalten erste Nicht-Leerzeichen und enden an der letzten Nummer Ziffer, die folgt unmittelbar.
Erhalten nächstes Nicht-Leerzeichen
nächste Nicht-Leerzeichen und enden an den letzten Nummer Ziffer erhalten, die es direkt folgt.
Irgendwelche Hinweise auf Syntax, um das zu erreichen?
EDIT: Ich versuche nicht einfach, das Ergebnis des fraglichen Ausdrucks zu evulieren, ich muss es aufteilen und in einer ArrayList speichern, um später als Teil einer Fraktionsklasse zu manipulieren.
Sie sollen nicht regex verwenden Dazu wird es nicht mit verschachtelten arithmetischen Ausdrücken skalieren. Sie benötigen einen Parser. –
Müssen Sie Regex verwenden? Wenn nicht, lesen Sie diese [Antwort] (http://stackoverflow.com/a/36341949/4256677) – varontron