Wie entferne ich alle Nicht-ASCII-Zeichen mit Regex und Notepad ++?

147

Ich habe viel gesucht, aber nirgends steht geschrieben, wie man Nicht-ASCII-Zeichen aus Notepad ++ entfernt.

Ich muss wissen, welchen Befehl ich in Suchen und Ersetzen schreiben soll (mit Bild wäre es großartig).

  • Wenn ich eine weiße Liste erstellen und alle ASCII-Wörter / Zeilen mit einem Lesezeichen versehen möchte, werden Nicht-ASCII-Zeilen nicht markiert

  • Wenn die Datei ziemlich groß ist und nicht alle ASCII-Zeilen auswählen kann und nur die Zeilen auswählen möchten, die Nicht-ASCII-Zeichen enthalten ...

Texh
quelle

Antworten:

262

Dieser Ausdruck sucht nach Nicht-ASCII-Werten:

[^\x00-\x7F]+

Kreuzen Sie 'Suchmodus = Regulärer Ausdruck' an und klicken Sie auf Find Next.

Quelle: Regex ein beliebiges ASCII-Zeichen

ProGM
quelle
4
und nur für den Fall, dass es nicht offensichtlich ist, wenn Sie das "^" entfernen, suchen Sie die ASCII-Zeilen
Mike M
7
Funktioniert gut, aber ich musste einstellen Encoding->Encode in ANSI. Konnte nichts anderes finden.
FoamyGuy
1
Funktioniert perfekt in Netbeans mit seiner Regexp-Suchoption (Asterix-Button)
Teson
funktioniert in VS-Code, vergessen Sie nicht, auf Regex-Suchoption zu klicken!
Yashhy
4
Wenn Sie \ r und \ n - Wagenrücklauf- und Zeilenvorschubzeichen behalten möchten - können Sie diesen regulären Ausdruck verwenden: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler
52

Wenn Sie in Notepad ++ zum Menü SuchenZeichen im Bereich suchenNicht-ASCII-Zeichen (128-255) gehen , können Sie das Dokument zu jedem Nicht-ASCII-Zeichen durchgehen.

Aktivieren Sie unbedingt " Wrap around ", wenn Sie das Dokument für alle Nicht-ASCII-Zeichen durchlaufen möchten.

Screenshot "In Reichweite finden"

Anon Y. Mous
quelle
3
Dies funktioniert gut, zeigt aber nicht alle Ergebnisse in einer Liste und keine "Ersetzen" -Option
Alex
Ordentlich ... weil ich immer den regulären Ausdruck für Nicht-ASCII vergesse und ihn jedes Mal googeln muss, um zu dieser Seite zurückzukehren :)
Jean-Francois T.
26

Zusätzlich zur Antwort von ProGM können Sie, falls Sie Zeichen in Feldern wie NUL oder ACK sehen und diese entfernen möchten, ASCII-Steuerzeichen (0 bis 31) mit dem folgenden Ausdruck finden und entfernen:

[\x00-\x1F]+

Um alle Nicht-ASCII- UND ASCII-Steuerzeichen zu entfernen, sollten Sie alle Zeichen entfernen, die diesem regulären Ausdruck entsprechen:

[^\x1F-\x7F]+
Brunorey
quelle
Werte von \x00und \x1Fwerden bereits in der Antwort von ProGM abgeglichen.
Unihedron
2
Sie werden als Werte abgeglichen, die Sie behalten möchten. Ich habe dies nur vorgeschlagen, falls Sie sie loswerden möchten.
Brunorey
Das letzte Beispiel sollte bei 20 beginnen, um das Einheitentrennzeichen auszuschließen. Schließen Sie möglicherweise 7F aus, da es sich auch um ein Steuerzeichen handelt.
FGB
Brillant! Ich entfernte alle lästigen Nicht-ASCII-Zeichen mit dem qdap R-Paket mit:mgsub("[^\x1F-\x7F]+", "", text_vector, fixed = FALSE)
Pablo Adames
22

Um alle Nicht-ASCII-Zeichen zu entfernen, können Sie Folgendes ersetzen: [^\x00-\x7F]+

Nicht-ASCII entfernen

Um Zeichen hervorzuheben, empfehle ich die Verwendung der Markierungsfunktion im Suchfenster: Dadurch werden Nicht-ASCII-Zeichen hervorgehoben und in die Zeilen, die eines davon enthalten, ein Lesezeichen eingefügt

Wenn Sie stattdessen die ASCII-Zeichen markieren und mit einem Lesezeichen versehen möchten, können Sie dazu den regulären Ausdruck [\x00-\x7F]verwenden.

Hervorheben von Nicht-ASCII

Prost

Jean-Francois T.
quelle
1
Wenn Sie den Suchausdruck [^ \ x00- \ x7F] +
Hyäne
2
Wenn Sie \ r und \ n - Wagenrücklauf- und Zeilenvorschubzeichen behalten möchten - können Sie diesen regulären Ausdruck verwenden: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler
4

So behalten Sie neue Zeilen:

  1. Wählen Sie zuerst ein Zeichen für eine neue Zeile aus ... Ich habe # verwendet.
  2. Wählen Sie die Option Ersetzen, erweitert.
  3. Eingabe \ n durch # ersetzen
  4. Klicken Sie auf Alle ersetzen

Nächster:

  1. Wählen Sie die Option Ersetzen, regulärer Ausdruck.
  2. Geben Sie Folgendes ein: [^ \ x20- \ x7E] +
  3. Durch Leer ersetzen
  4. Klicken Sie auf Alle ersetzen

Wählen Sie nun die Option Ersetzen Erweitert und ersetzen Sie # durch \ n

:) Jetzt hast du eine saubere ASCII-Datei;)

TooGeeky
quelle
3

Ein weiterer guter Trick besteht darin, in Ihrem Editor in den UTF8-Modus zu wechseln, damit Sie diese lustigen Zeichen tatsächlich sehen und selbst löschen können.

Gidon Wise
quelle
1

Ein anderer Weg...

  1. Installieren Sie das Text FX-Plugin, falls Sie es noch nicht haben
  2. Gehen Sie zur Menüoption TextFX -> zappen Sie alle nicht druckbaren Zeichen auf #. Alle ungültigen Zeichen werden durch 3 # -Symbole ersetzt
  3. Gehen Sie zu Suchen / Ersetzen und suchen Sie nach ###. Ersetzen Sie es durch ein Leerzeichen.

Dies ist schön, wenn Sie sich nicht an den regulären Ausdruck erinnern können oder ihn nicht nachschlagen möchten. Aber der von anderen erwähnte Regex ist auch eine gute Lösung.

goku_da_master
quelle
Durch Zappen aller Zeichen werden alle Arten von Satzzeichen durch ### ersetzt. Die Lösung, die ich erwarten würde, ist: Ersetzen von "&" durch ". Ersetzen von" & "durch" usw.
Kasim Husaini
Es funktioniert gut, aber das Tool ersetzt lustige Zeichen durch ein # Zeichen und nicht durch drei. beachten Sie bitte.
Raghav
1
Das Text FX-Plugin ist veraltet und möglicherweise nicht mehr verfügbar. Siehe z. B. TextFXs Zukunft - "Wenn die Liste lang genug wächst, wird es praktisch, sich von einem alternden Arbeitstier zu verabschieden, das der Community gute Dienste geleistet hat."
Peter Mortensen