Guten Morgen,
ich habe übers WE auf regexe.de einen Pattern gebastelt, der leider nur dort so funktioniert wie er soll. Im VBS leider nicht, was aber auch am Einlesen der Textdatei liegen kann (Array?).
In besagter Textdatei beginnt jede Zeile mit einem "Wort" und endet i.d.R. mit einer Ziffernfolge. Die Ziffernfolge kann aus einer einstelligen Ganzzahl (0,1,...) oder aus einer Dezimalzahl mit max. zwei Nachkommastellen bestehen (Komma = Punkt, z.B. 100.23).
Beispiel:
Versucht habe ich es hiermit:
Mit diesem Ziel:
Unter besagtem Onlinetool funktioniert das weitgehenst mit den Ausnahmen, daß einstellige Ganzzahlen oder Dezimalzahlen mit mehr als einer Nachkommastelle nicht erkannt werden.
Ein "kleiner" Schönheitsfehler besteht auch darin, daß am Zeilenanfang auch mal nur ein Wort stehen kann bzw. das Datum unbehelligt bleiben soll.
Wie kann ich das realisieren, vor allem im VBS, denn da läuft es nämlich nicht?
Das Ganze VBS sieht zum Testen derzeit so aus, min. die auskommentierten Stellen könnten idealerweise entfallen:
Weil ich beim "stöbern" schon mehrfach über "sed" gestolpert bin: Läßt sich das Problem damit besser lösen? Wo finde ich das Programm mit mehr oder minder guter Dokumentation\Hilfe?
LG
_opiwahn_
ich habe übers WE auf regexe.de einen Pattern gebastelt, der leider nur dort so funktioniert wie er soll. Im VBS leider nicht, was aber auch am Einlesen der Textdatei liegen kann (Array?).
In besagter Textdatei beginnt jede Zeile mit einem "Wort" und endet i.d.R. mit einer Ziffernfolge. Die Ziffernfolge kann aus einer einstelligen Ganzzahl (0,1,...) oder aus einer Dezimalzahl mit max. zwei Nachkommastellen bestehen (Komma = Punkt, z.B. 100.23).
Beispiel:
Code:
Units tested Min. 10 10
Lowest value Min. 25 N 78
Average mass 220 to 244 mg 227
Portion (>7,5%<=15%) Max. 10 % 0
Portion (>15%) Max. 0 % 0
Units tested Min. 6 6
Mean value Min. 80 % decl. content 99
Lowest value % decl. content 97
Highest value % decl. content 101
Manufacturing date: 12 Jun 2012
Versucht habe ich es hiermit:
Code:
.Pattern = "([a-zA-Z]+\s+[a-zA-Z]+\b)(?:\(?.*\)?.*)(\b\d+\.?\d)"
T =.Replace(T, "$1;$2")
Mit diesem Ziel:
Code:
Units tested;10
Lowest value;78
Average mass;227
Portion;0
Portion;0
Units tested;6
Mean value;99
Lowest value;97
Highest value;101
Manufacturing date; 12 Jun 2012
Unter besagtem Onlinetool funktioniert das weitgehenst mit den Ausnahmen, daß einstellige Ganzzahlen oder Dezimalzahlen mit mehr als einer Nachkommastelle nicht erkannt werden.
Ein "kleiner" Schönheitsfehler besteht auch darin, daß am Zeilenanfang auch mal nur ein Wort stehen kann bzw. das Datum unbehelligt bleiben soll.
Wie kann ich das realisieren, vor allem im VBS, denn da läuft es nämlich nicht?
Das Ganze VBS sieht zum Testen derzeit so aus, min. die auskommentierten Stellen könnten idealerweise entfallen:
Code:
InFile = WScript.Arguments(0)
OutFile = WScript.Arguments(1)
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.GetFile(InFile).Size = 0 Then
fso.CreateTextFile(OutFile)
WScript.Quit
End If
T = fso.OpenTextFile(WScript.Arguments(0)).ReadAll
With New RegExp
.Global = True
.IgnoreCase = True
.Multiline = True
.Pattern = "[ ]{2,}"
T = .Replace(T, " ")
.Pattern = "(Quantity :)"
T = .Replace(T, "")
'.Pattern = "(:)"
'T = .Replace(T, ";")
'.Pattern = "(Batch No)\s+(\d)"
'T = .Replace(T, "$1;$2")
'.Pattern = "(tested|value|mass) "
'T = .Replace(T, "$1 ; ")
'.Pattern = " (\d)"
'T =.Replace(T, " ; $1")
.Pattern = "([a-zA-Z]+\s+[a-zA-Z]+\b)(?:\(?.*\)?.*)(\b\d+\.?\d)"
T =.Replace(T, "$1;$2")
End With
Weil ich beim "stöbern" schon mehrfach über "sed" gestolpert bin: Läßt sich das Problem damit besser lösen? Wo finde ich das Programm mit mehr oder minder guter Dokumentation\Hilfe?
LG
_opiwahn_
Zuletzt bearbeitet: