Powershell - Regex - An die Experten
Frage an die absoluten Regex-Experten.
In einem Ordner befinden sich Dateien, die eingelesen und zerlegt werden müssen.
Eine Datei sieht zum Beispiel so aus.
Diese Datei muss nun so zerlegt werden, dass jeweils:
1) alles hinter MSH / PID / PV1 eingelesen wird
2) das "^"-Zeichen muss als "|" ersetzt werden
3) die "~\&"-Zeichen sollen als Leerzeichen ersetzt werden
4) alles, was jeweils hinter dem "|" -Zeichen steht, gilt als wichtiger Wert
Bis hierhin schaffe ich das noch in einen Array zu laden und er speichert mir das auch.
Aber, nun das wirklich Knifflige.
Wie kann ich es erreichen, dass er mir zusätzlich die jeweilige Stelle des Wertes ausgibt?
Nehme ich nun die Datei oben und zerlege sie, kommt nach der Umwandlung zuerst das heraus:
speichert er in meinem Array:
MSH=Bereich1,Bereich2,Bereich3,Bereich4,201612230908,ORM,O01,P,2.4
PID=0080012103,SC02,Bereich5,19750501,M
PV1=LAB,00000504970000
Hierbei soll aber zusätzlich auch erscheinen, Beispiel:
Bereich1=3 Stelle
Bereich2=4 Stelle
ORM=9 Stelle
0080012103=3 Stelle
SC02=5 Stelle
LAB=3 Stelle
00000504970000=19 Stelle
In einem Ordner befinden sich Dateien, die eingelesen und zerlegt werden müssen.
Eine Datei sieht zum Beispiel so aus.
ORM^O01 |
|0080012103 |
|LAB |
Diese Datei muss nun so zerlegt werden, dass jeweils:
1) alles hinter MSH / PID / PV1 eingelesen wird
2) das "^"-Zeichen muss als "|" ersetzt werden
3) die "~\&"-Zeichen sollen als Leerzeichen ersetzt werden
4) alles, was jeweils hinter dem "|" -Zeichen steht, gilt als wichtiger Wert
Bis hierhin schaffe ich das noch in einen Array zu laden und er speichert mir das auch.
Aber, nun das wirklich Knifflige.
Wie kann ich es erreichen, dass er mir zusätzlich die jeweilige Stelle des Wertes ausgibt?
Nehme ich nun die Datei oben und zerlege sie, kommt nach der Umwandlung zuerst das heraus:
|Bereich1|Bereich2|Bereich3|Bereich4|201612230908 | ORM|O01 |
|0080012103 | SC02|Bereich5 |
|LAB |
speichert er in meinem Array:
MSH=Bereich1,Bereich2,Bereich3,Bereich4,201612230908,ORM,O01,P,2.4
PID=0080012103,SC02,Bereich5,19750501,M
PV1=LAB,00000504970000
Hierbei soll aber zusätzlich auch erscheinen, Beispiel:
Bereich1=3 Stelle
Bereich2=4 Stelle
ORM=9 Stelle
0080012103=3 Stelle
SC02=5 Stelle
LAB=3 Stelle
00000504970000=19 Stelle
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 328572
Url: https://administrator.de/contentid/328572
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar
Was ist daran knifflig?
Splitte deine Zeile mit Split() oder dem Split Operator -Split dann hast du deine Zeile in einem Array und kannst Position und Inhalt mit einer einfachen For-Schleife ausgeben.
Und ein simpler Split hat mit Regex eigentlich nichts zu tun.
Gruß
Splitte deine Zeile mit Split() oder dem Split Operator -Split dann hast du deine Zeile in einem Array und kannst Position und Inhalt mit einer einfachen For-Schleife ausgeben.
Bis hierhin schaffe ich das noch in einen Array zu laden und er speichert mir das auch.
Frage ist warum du uns den ganzen oberen Teil erzählst wenn du das schon selbst geschafft hast und hier nicht deine Frage ist ?Und ein simpler Split hat mit Regex eigentlich nichts zu tun.
Gruß
"Super Antwort"
Nicht wahr, find ich auch.Wenn du ja alles so toll kannst, dann poste doch einfach einen Code dazu
Hab ich kein Problem mit wenn man mich lieb drum bittet, war ja nirgends ersichtlich das du Code haben willst und das eine Schilderung mit Denkanstoß wieder nicht reicht.$line sollte deine Zeile beinhalten.
$array = $line.split('|')
0..($array.count -1) | %{
write-host "Position: $_ , Inhalt: $($array[$_])"
}
Und Tschüss.