Per regex punk vor strich "herausfiltern"

StrikeTom

Bekanntes Mitglied
Hallo Leute,
ich progge gerade einen Rechen un bin nun bei der punkt vor strich rechnung.
Doch wie returne ich immer einzelne zusammengehörende(punkte(*/)) strings per regex?
Mein versuch:
Code:
.*([0-9\(\)]+[\/*][0-9\(\)]).*
Doch da sind noch etliche fehler drin(sonst kom ich eigendlich mit regex klar)
Könnt ihr mir helfen?

Danke im vorraus🙂
 
rechen_himmel.jpg
:joke:

Vielleicht weiß ein Regex-Fan da eine potentielle Lösung, aber ... so als kleiner Einschub: Hat es einen bestimmten Grund, warum du das mit Regex machen willst, und nicht "ganz normal" mit einem Parser? Schon allein die Regex, die einen beliebigen double-Wert matcht wartet ja immer noch auf ihre Realisierung.... ???:L
 
>ich progge gerade einen Rechen

Das ist bekannt ;-)
Naja. Ums mal ein wenig auf den Punkt zu bringen. Mit Regex wirst du kaum je Glücklich werden. Versuch das Problem mit RegEx zu lösen und du hast dann 2 Probleme (hehe). Für einfachere Dinge ok, aber um mathematische Formel zu lösen, kommt man ziemlich schnell an die grenzen. Üblicherweise sollte man einen Parser Generator benutzer. Ein Beipsiel wäre Antlr (ANother Tool for Language Recognition).
Zu meine Uni Zeit hab ich mal sowas für antlr geschrieben (der sogar Platzhalter erkennt) siehe Link. Zudem gibts für Antlr auch diverse Tutorials für einfache Rechner (+-*/) um die Materie kennen zu lernen.

http://www.java-forum.org/java-basi...-fuer-matheaufgaben-erstellen.html#post435758
 
Üblicherweise sollte man einen Parser Generator benutzer. Ein Beipsiel wäre Antlr (ANother Tool for Language Recognition).
Zu meine Uni Zeit hab ich mal sowas für antlr geschrieben (der sogar Platzhalter erkennt) siehe Link.
Kleiner Tipp: mit Xtext geht es wesentlich einfacher als mit Antlr. Xtext verwendet zwar unter der Haube selbst Antlr um den Parser zu generieren, allerdings hat man als Anwender nicht mehr direkt mit dem Parsergenerator (und dessen komplexer Syntax) zu tun , was die Sache enorm vereinfacht.
Xtext
 

Zurück
Oben