Hallo.
Bin grad dabei mich in Regex einzuarbeiten. Gefällt mir soweit sehr gut, aber ich blicke noch nicht bei allem durch.
Ich habe z.B. folgenden Inhalt in einem String:
Zeit_AufProzent :=\n
tTimeOut\n
* INT_AufProzentsatz\n
/100
oder
Zeit_AufProzent :=\n
tTimeOut * INT_AufProzentsatz / 100
oder
Zeit_AufProzent :=\n // Das ist ein Kommentar
tTimeOut * INT_AufProzentsatz / 100
Ich würde nun gerne die Variablen-Namen, das Zuweisungszeichen sowie die Rechenzeichen auflösen (Steuerzeichen \n soll dabei entfernt werden, Kommentar, wenn vorhanden, soll ans Ende des StringArrays).
Wie kann ich mir nun den Regex-Separator vorstellen?
Was hast Du bisher probiert? Das Forum ist kein Regex-Pattern Generator 😃
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Meine 1. Version war:
[a-zA-Z]\s+:=\s+[a-zA-Z0-9]\s+[+-*/]{1-8}
[a-zA-Z_]{1,30}\s+:=\s+[a-zA-Z_]{1,30}\s+[+\-*\/]{1,8}
\S\s:=
Ergebnis:
String[0] = "t :="
[a-zA-Z_]{1,30}\s:=
Ergebnis:
String[0] = "Zeit_AufProzent :="
Aber ich möchte ja:
String[0] = "Zeit_AufProzent"
String[1] = ":="
String[2] = "tTimeOut"
Antworte mir mal selbst 😃
Habe gerade
(\S+)\s:=\s(\S+)\s(\S+)\s(\S+)\s(\S+)
versucht.
Ergebnis:
String[0] = "Zeit_AufProzent"
String[1] = "tTimeOut"
String[2] = "*"
String[3] = "INT_AufProzentsatz"
String[4] = "/100"
Schon "besser", aber /100 noch "falsch" und wenn ich mehr Ausdrücke drin habe, werden die nicht ausgewertet (sprich nach /100 kommt noch +20*Temp10)
Ja, hab ich grad gefunden, daher auch meine eigene Antwort 😃
Damit kann man schön testen.
Ich komme der Sache näher...
Hi Krumnix,
Ich würde nun gerne die Variablen-Namen, das Zuweisungszeichen sowie die Rechenzeichen auflösen (Steuerzeichen \n soll dabei entfernt werden, Kommentar, wenn vorhanden, soll ans Ende des StringArrays).
Ich befürchte, bei diesen Anforderungen kommst du mit RegEx nicht besonders weit. Was du brauchst, ist ein Parser, der deine Eingabe in einzelne Ausdrücke zerlegt, und diese in einer Baumstruktur anordnet. Danach kannst du dann aus dem Baum wieder die Formeln als Text generieren, Variablen ersetzen, und Kommentare positionieren. Als Anregung hilft dir vielleicht: Parser für mathematische Formeln
Weeks of programming can save you hours of planning
Hallo,
ich habe mal etwas gebastelt. Eventuell kannst du darauf aufbauen. Für dein erstes Beispiel funktioniert der Regex.
\s*(?<result>\w+).*\\n\s+(?<first>\w+).+\*\s+(?<second>\w+).+/\s*(?<third>[0-9]*)
Bis auf die Kommentare sollte das eigentlich fast für alle Varianten greifen.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |