Bagaimana cara menghapus semua karakter non-ASCII dengan regex dan Notepad ++?

147

Saya banyak mencari, tetapi tidak tertulis bagaimana menghapus karakter non-ASCII dari Notepad ++.

Saya perlu tahu apa perintah untuk menulis menemukan dan mengganti (dengan gambar akan lebih bagus).

  • Jika saya ingin membuat daftar putih dan menandai semua kata / baris ASCII, maka baris non-ASCII tidak akan ditandai

  • Jika file tersebut cukup besar dan tidak dapat memilih semua baris ASCII dan hanya ingin memilih baris yang mengandung karakter non-ASCII ...

Texh
sumber

Jawaban:

263

Ekspresi ini akan mencari nilai non-ASCII:

[^\x00-\x7F]+

Centang 'Mode Pencarian = Ekspresi reguler', dan klik Find Next.

Sumber: Regex setiap karakter ASCII

ProGM
sumber
4
dan untuk berjaga-jaga kalau tidak jelas, jika Anda menghapus "^" Anda mencari garis ASCII
Mike M
7
Bekerja dengan baik, tetapi saya harus mengatur Encoding->Encode in ANSI. Tidak dapat menemukan apa pun sebaliknya.
FoamyGuy
1
Berfungsi sempurna di netbeans dengan opsi regexp-search (asterix-button)
Teson
berfungsi dalam VS-Code, jangan lupa klik opsi pencarian Regex!
yashhy
4
Jika Anda ingin mempertahankan \ r dan \ n - karakter carriage return dan linefeed - Anda dapat menggunakan regex ini: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler
53

Di Notepad ++, jika Anda masuk ke menu CariTemukan karakter dalam kisaranKarakter Non-ASCII (128-255), Anda kemudian dapat menelusuri dokumen untuk setiap karakter non-ASCII.

Pastikan untuk mencentang " Bungkus " jika Anda ingin mengulang dokumen untuk semua karakter non-ASCII.

tangkapan layar "Temukan di Jangkauan"

Anon Y. Mous
sumber
3
Ini bekerja dengan baik, tetapi tidak menampilkan semua hasil dalam daftar dan tidak ada opsi "ganti"
Alex
Rapi ... karena saya selalu lupa regex untuk non-ASCII dan harus Google setiap kali untuk kembali ke halaman ini :)
Jean-Francois T.
27

Selain jawaban oleh ProGM, jika Anda melihat karakter dalam kotak seperti NUL atau ACK dan ingin menghilangkannya, itu adalah karakter kontrol ASCII (0 hingga 31), Anda dapat menemukannya dengan ekspresi berikut dan menghapusnya:

[\x00-\x1F]+

Untuk menghapus semua karakter kontrol non-ASCII DAN ASCII, Anda harus menghapus semua karakter yang cocok dengan regex ini:

[^\x1F-\x7F]+
brunorey
sumber
Nilai dari \x00dan \x1Fsudah cocok dengan jawaban oleh ProGM.
Unihedron
2
Nilai tersebut cocok dengan nilai yang ingin Anda pertahankan. Saya hanya menyarankan ini jika Anda ingin menyingkirkan mereka.
brunorey
Contoh terakhir harus dimulai pada 20 untuk mengecualikan karakter pemisah unit. Mungkin mengecualikan 7F dan juga karakter kontrol.
fgb
Cemerlang! Saya menghapus semua karakter non-ASCII yang sial menggunakan paket qdap R menggunakan:mgsub("[^\x1F-\x7F]+", "", text_vector, fixed = FALSE)
Pablo Adames
22

Untuk menghapus semua karakter non-ASCII, Anda dapat menggunakan penggantian berikut: [^\x00-\x7F]+

Menghapus non-ASCII

Untuk menyorot karakter, saya sarankan menggunakan fungsi Tandai di jendela pencarian: ini menyoroti karakter non-ASCII dan menempatkan bookmark di baris yang berisi salah satunya

Jika Anda ingin menyorot dan meletakkan bookmark pada karakter ASCII, Anda dapat menggunakan regex [\x00-\x7F]untuk melakukannya.

Sorot Non-ASCII

Bersulang

Jean-Francois T.
sumber
1
jika Anda ingin menyalin jenis ekspresi pencarian [^ \ x00- \ x7F] +
hyena
2
Jika Anda ingin mempertahankan \ r dan \ n - karakter carriage return dan linefeed - Anda dapat menggunakan regex ini: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler
4

Untuk menjaga jalur baru:

  1. Pertama pilih karakter untuk baris baru ... Saya menggunakan #.
  2. Pilih opsi ganti, diperluas.
  3. masukan \ n ganti dengan #
  4. Tekan Ganti Semua

Lanjut:

  1. Pilih opsi Ganti Ekspresi Reguler.
  2. Masukkan ini: [^ \ x20- \ x7E] +
  3. Tetap Ganti Dengan Kosong
  4. Tekan Ganti Semua

Sekarang, Pilih opsi Ganti Diperpanjang dan Ganti # dengan \ n

:) sekarang, Anda memiliki file ASCII yang bersih;)

Terlalu buruk
sumber
3

Trik bagus lainnya adalah masuk ke mode UTF8 di editor Anda sehingga Anda benar-benar dapat melihat karakter lucu ini dan menghapusnya sendiri.

Gidon Wise
sumber
1

Cara lain...

  1. Instal plugin Text FX jika Anda belum memilikinya
  2. Buka opsi menu TextFX -> zap semua karakter yang tidak dapat dicetak ke #. Ini akan mengganti semua karakter yang tidak valid dengan simbol 3 #
  3. Buka Cari / Ganti dan cari ###. Gantilah dengan spasi.

Ini bagus jika Anda tidak dapat mengingat regex atau tidak peduli untuk mencarinya. Tetapi regex yang disebutkan oleh orang lain adalah solusi yang bagus juga.

goku_da_master
sumber
Zapping semua karakter menggantikan semua jenis tanda baca dengan ###. Solusi yang saya harapkan adalah: Mengganti "&" dengan ". Mengganti '&' dengan '. Dll.
Kasim Husaini
Ini berfungsi dengan baik, namun, alat ini menggantikan karakter lucu dengan satu karakter # dan bukan tiga. mohon dicatat.
Raghav
1
Plugin Text FX sudah usang dan bahkan mungkin tidak tersedia lagi. Lihat misalnya Masa Depan TextFX - "Ketika daftar tumbuh cukup lama, akan menjadi praktis untuk mengucapkan selamat tinggal pada kuda pekerja yang sudah tua yang telah melayani masyarakat dengan baik."
Peter Mortensen