![]() |
[TPerlRegEx] Binary Replace
Hallo,
ist es möglich mit TPerlRegEx binäre Daten zu ersetzen? Konkret sollte das etwa so aussehen.
Delphi-Quellcode:
Es soll
with TPerlRegEx.Create(nil) do
try Subject := BINAERE_DATEN; RegEx := '\x01\x02'; Replacement := '\x03\x04'; Replace(); finally Free; end;
Delphi-Quellcode:
durch
#01#02
Delphi-Quellcode:
ersetzen, leider wird
#03#04
Delphi-Quellcode:
durch
#01#02
Delphi-Quellcode:
ersetzt.
'\x03\x04'
Grüße, Win32.API //Edit: War mir ganz unsicher, in welches Forum ich das Posten soll. Vielleicht ist es in "Sonstige Fragen zu Delphi" besser aufgehoben. |
AW: [TPerlRegEx] Binary Replace
Delphi-Quellcode:
Die Expression muß schon den RegExp-Regeln entsprechen, aber im Replacement muß der gewünschte Text direkt drinstehn, da dort natürlich nicht die Expression-Regeln gelten.
RegEx := '\x01\x02';
Replacement := #3#4; |
AW: [TPerlRegEx] Binary Replace
Ah, ok, danke Dir für die Antwort. Gibt es eine Möglichkeit das Replacement auch in RegEx-Syntax anzugeben? Um einen Einheitlichen Standard zu schaffen?
|
AW: [TPerlRegEx] Binary Replace
mit Boardmitteln ... nein
du müßtest dir also selber einen Converter schreiben, wobei man hierbei notfalls auch wieder 'nen RegEx-Replace nutzen könnte. Deine Lib bietet doch eine Möglichkeit über 'ne Callbackfunktion den Repleace durchzuführen? z.B. für diese "Chars" nach
Delphi-Quellcode:
suchen, in dem Callback den Hex-Anteil in ein Char übersetzen.
'\\x\x{1,2}'
Aber danke für den Tipp (schreibe ja nebenbei noch eine "fast fertige" RegEx-Lib) und da könnte ich soeinen Converter leicht mit integrieren :) (bin aber aktuell noch mit was Anderem beschäftigt und erst danach kann ich mich wieder darum kümmern :cry: ) |
AW: [TPerlRegEx] Binary Replace
Zitat:
Delphi-Quellcode:
, wobei man an dieser Stelle noch auf das Escapen aufpassen müsste.
\\x([0-9a-fA-F]{1,2})
Grüße, Win32.API |
AW: [TPerlRegEx] Binary Replace
ups, jetzt hab'sch mich tatsächlich verlaufen :wall:
OK, dann halt
XML-Code:
(nach Perl) sowie
\p{IsXDigit}
XML-Code:
(nach POSIX) oder eben
[[:xdigit:]]
XML-Code:
.
[0-9A-Fa-f]
k.A. ob's so auch noch läuft
XML-Code:
. oder vielleicht einfach nur
'(?=(\\\\|[^\\]\\\\|[^\\]|^))\\x[0-9A-Fa-f]{1,2}'
XML-Code:
alle Escapesequenzen davor auszuwerten, via 'ner RegExp, ist nun och nicht so einfach/möglich.
'(?!\\)\\x[0-9A-Fa-f]{1,2}'
|
AW: [TPerlRegEx] Binary Replace
Habe nochmal ein wenig in den Perl-Docks gestöbert: \x gibt's nicht dafür aber \X, welches genau das macht. :thumb:
Und das escapen sollte doch mit einer einfachen negative look behind expression ala
Delphi-Quellcode:
funktionieren.
(?<!\\)\\x\X{1,2}
Grüße, Win32.API |
AW: [TPerlRegEx] Binary Replace
hab'sch mich also doch nicht total falsch verlaufen :stupid:
Zitat:
Delphi-Quellcode:
geht
'abc\x12' .. 'a b c \x12'
Delphi-Quellcode:
geht
'abc\\x12' .. 'a b c \\ x 1 2'
Delphi-Quellcode:
geht nicht :stupid:
'abc\\\x12' .. 'a b c \\ \x12'
Delphi-Quellcode:
geht
'abc\\\\x12' .. 'a b c \\ \\ x 1 2'
also oftmals könnte es funktionieren ... muß es aber nicht |
AW: [TPerlRegEx] Binary Replace
Zitat:
Ich glaube es wird auch schwer, dass mit einer RegEx Expression zu lösen. Wenn dann müsste jeder Slash escapt werden. Also wird '\\' zu '\' und '\' zu ''. |
AW: [TPerlRegEx] Binary Replace
eventuell so
wenn keine ungerade Anzahl an \ davor liegt, dann umwandeln :gruebel:
XML-Code:
'(?!([^\\]|^)\\(\\\\)*)\\x[0-9A-Fa-f]{1,2}'
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz