Seite 1 von 1
Teilstring entfernen?
Verfasst: 22.12.2022 20:26
von Micro
Hallo zusammen,
ich habe mehrere XML-Dateien in einem Verzeichnis, in denen ich einen Teilstring enfernen möchte.
Die XML-Datei hat 2 Zeilen, wobei die 2. Zeile bis zu 30.000 Zeichen beinhalten kann.
Diese Passage fängt mit <col min="2" max="2" und hört mit einem > auf.
Alles was dazwischen zusätzlich geschrieben ist, muss natürlich auch entfernt werden. Dummerweise ist das jedesmal unterschiedlich.
Ich hab mir das mit dem CreateRegularExpression() angeschaut, komme damit aber nicht klar.
Wer kann mir da helfen?
LG Frank
Re: Teilstring entfernen?
Verfasst: 22.12.2022 22:52
von jacdelad
Code: Alles auswählen
EnableExplicit
Define TeilString$,start,ende
TeilString$ = ~"Mein TeilString <col min=\"2\" max=\"2\" irgendwas dazwischen >ist ziemlich lang."
start=FindString(TeilString$,~"<col min=\"2\" max=\"2\"")
If start
ende=FindString(TeilString$,">",start)
If ende
TeilString$=Left(TeilString$,start-1)+Right(TeilString$,Len(TeilString$)-ende)
Debug TeilString$
Else
Debug "Endteil nicht gefunden!"
EndIf
Else
Debug "Startteil nicht gefunden!"
EndIf
...unter der Voraussetzung, dass das erste Auftreten von ">" das Ende des zu schneidenden Stücks markiert.
Sicher noch verbesserungswürdig, gerade in punkto Geschwindigkeit.
Re: Teilstring entfernen?
Verfasst: 23.12.2022 11:19
von Andesdaf
https://regex101.com/r/GRa7wp/1
... falls der zu entfernende Teilstring zwischen <col> und </col> liegt, das ist mir nicht ganz klar.
Re: Teilstring entfernen?
Verfasst: 23.12.2022 13:34
von DarkDragon
Du willst xml attribute entfernen? Dann solltest du das xml traversieren mit den xml funktionen. RegEx ist dafür nicht geeignet. XML ist keine Reguläre Sprache (Chomsky Hierarchie), somit nichts für Reguläre Ausdrücke.
Siehe auch:
https://stackoverflow.com/a/1732454
Für schnelle hacks mag das klappen, aber sauber ist es halt nicht. Reguläre Ausdrücke sind zwar auch keine reinen regulären Ausdrücke mehr, aber dennoch eine schlechte Wahl.
Re: Teilstring entfernen?
Verfasst: 03.01.2023 07:55
von Micro
Moin
Danke #jacdelad, das Teil funzt.
Die Geschwindigkeit ist eigendlich bei dem Teil egal, da maximal 12 Dateien mit je um die 16KB bearbeitet werden sollen.
#DarkDragon, vielen Dank für die Info. Hab's mir gerade unter Favoriten abgespeichert und werd's die Tage mal genauer durcharbeiten.
LG Frank