Notepad ++ - Ersetzungszeichenfolge mit NUL schneidet nach NUL ab

462
David Mancini

Mit Notepad ++ versuche ich, eine Zeichenfolge (in einer Binärdatei ) wie folgt zu ersetzen :

A NULp NULp NULl NULeNUL

Mit einer anderen Zeichenfolge wie dieser:

O NULr NULa NULn NULg NULeNUL

So...

Bei Verwendung des folgenden Formats für den regulären Suchausdruck findet N ++ alle Instanzen des Zieltextes genau:

A \x00p \x00p \x00l \x00e\x00

Verwenden Sie jedoch folgende Ersatzzeichenfolge :

O \x00r \x00a \x00n \x00g \x00e\x00

Ersetzt alle gefundenen Instanzen mit:

ONUL

...und das ist es. Alles in der Ersetzungszeichenfolge nach der ersten NULwird ignoriert. Ich habe gegoogelt, habe mir das N ++ Wiki angeschaut, und vielleicht habe ich es vermisst, aber ich sehe nichts, warum dies so ist. Scheint wie ein "Null-Terminierungs-Problem", aber sollte das Suchen und Ersetzen nicht klug genug sein, um damit umzugehen? Benutze ich es falsch?

0
Es sieht so aus, als würden Sie eine Unicode-Datei bearbeiten, sie wird jedoch als ASCII eingelesen. Fehlt das erste `\ xFF \ xFE`? Wenn es mit der richtigen Kodierung geöffnet wird, sind die Such- und Ersetzungszeichenfolgen nur "Apple" und "Orange" und alles sollte normal funktionieren. AFH vor 5 Jahren 1
Nein, es ist eine binäre Datei, `* .accdb`, um genau zu sein. David Mancini vor 5 Jahren 0
Notepad ++ ist nicht als Binärdatei-Editor konzipiert. Es hat jedoch ein Hex-Editor-Plugin. Siehe [Wie installiere ich das Notepad ++ Hex-Editor-Plugin?] (// superuser.com/q/1324217) DavidPostill vor 5 Jahren 0
Bei der Datei, die Sie bearbeiten, handelt es sich um eine Access-Datenbankdatei. Sie sollte nicht mit anderen Elementen (oder kompatibler Software) bearbeitet werden. Andernfalls besteht die Gefahr, dass die Datenbankstruktur beschädigt wird, zumal Sie die Länge einer Zeichenfolge ändern. Allerdings konnte ich keine Unicode-Daten finden oder erstellen, die NP ++ nicht als solche erkannt hat. NotePadQQ (der Linux-Port von NP ++) konnte jedoch dazu gebracht werden, eine Unicode-Textdatei als ASCII zu akzeptieren, und ich konnte Ihre Ergebnisse reproduzieren. Ich fand jedoch, dass es nach Belieben funktionieren würde, wenn ich stattdessen "Suche mit Sonderzeichen" auswähle von mit regulären Ausdrücken. AFH vor 5 Jahren 2
@AFH Ich versuche tatsächlich, eine gleichlange Zeichenfolge, die als Datenbankeigenschaft gespeichert ist, zu ersetzen. Dies war nur ein Beispiel. Die letzte Frage betraf nicht das implizierte X <> Y-Problem. Ich wollte wissen, warum Notepad ++ die Ersatzzeichen nach dem ersten "` \ x00` "ignoriert. Dass ich mit einem accdb arbeite, ist für die Frage unerheblich. David Mancini vor 5 Jahren 0
Und funktioniert Extended, wenn Sie es anstelle von RE verwenden? AFH vor 5 Jahren 0
Wenn ich Extended für die Suche verwende, kann ich scheinbar nicht nach 'NUL' suchen, gefolgt von einem Ziffernzeichen, da die Nummer als Teil des Escape-Codes interpretiert wird. ZB sollte \ 07 "NUL" 7 sein, nicht "\ 7" Escape. David Mancini vor 5 Jahren 0

0 Antworten auf die Frage