Làm cách nào để xóa tất cả các ký tự không phải ASCII bằng regex và Notepad ++?


147

Tôi đã tìm kiếm rất nhiều, nhưng không nơi nào viết ra cách loại bỏ các ký tự không phải ASCII khỏi Notepad ++.

Tôi cần biết lệnh nào để viết trong tìm và thay thế (với hình ảnh nó sẽ rất tuyệt).

  • Nếu tôi muốn tạo một danh sách trắng và đánh dấu tất cả các từ / dòng ASCII để các dòng không phải ASCII sẽ không được đánh dấu

  • Nếu tệp khá lớn và không thể chọn tất cả các dòng ASCII và chỉ muốn chọn các dòng chứa các ký tự không phải ASCII ...

Câu trả lời:


263

Biểu thức này sẽ tìm kiếm các giá trị không phải ASCII:

[^\x00-\x7F]+

Đánh dấu vào Mode Chế độ tìm kiếm = Biểu thức thông thường 'và nhấp vào Find Next.

Nguồn: Regex bất kỳ ký tự ASCII


4
và chỉ trong trường hợp không rõ ràng, nếu bạn xóa "^", bạn đang tìm kiếm các dòng ASCII
Mike M

7
Hoạt động tốt, nhưng tôi phải thiết lập Encoding->Encode in ANSI. Không thể tìm thấy bất cứ điều gì khác.
FoamyGuy

1
Hoạt động hoàn hảo trong netbeans với tùy chọn tìm kiếm regrec (nút dấu hoa thị)
Teson

hoạt động trong VS-Code, đừng quên nhấp vào tùy chọn tìm kiếm Regex!
yashhy

4
Nếu bạn muốn giữ \ r và \ n - ký tự trả về và ký tự dòng - bạn có thể sử dụng biểu thức chính này: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler

53

Trong Notepad ++, nếu bạn vào menu Tìm kiếmTìm các ký tự trong phạm viCác ký tự không phải ASCII (128-255), sau đó bạn có thể chuyển qua tài liệu cho từng ký tự không phải ASCII.

Hãy chắc chắn đánh dấu vào " Quấn quanh " nếu bạn muốn lặp trong tài liệu cho tất cả các ký tự không phải ASCII.

ảnh chụp màn hình "Tìm trong phạm vi"


3
Điều này hoạt động tốt, nhưng không hiển thị tất cả kết quả trong một danh sách và không có tùy chọn "thay thế"
Alex

Không gọn gàng ... bởi vì tôi luôn quên regex cho người không phải ASCII và phải truy cập Google mỗi lần để quay lại trang này :)
Jean-Francois T.

27

Ngoài câu trả lời của ProGM, trong trường hợp bạn thấy các ký tự trong các hộp như NUL hoặc ACK và muốn loại bỏ chúng, đó là các ký tự điều khiển ASCII (0 đến 31), bạn có thể tìm thấy chúng với biểu thức sau và xóa chúng:

[\x00-\x1F]+

Để xóa tất cả các ký tự điều khiển không phải ASCII VÀ ASCII, bạn nên xóa tất cả các ký tự khớp với biểu thức chính này:

[^\x1F-\x7F]+

Các giá trị từ \x00\x1Fđã được khớp trong câu trả lời của ProGM.
Unihedron

2
Chúng phù hợp như những giá trị bạn muốn giữ. Tôi chỉ đề nghị điều này trong trường hợp bạn muốn thoát khỏi chúng.
brunorey

Ví dụ cuối cùng nên bắt đầu từ 20 để loại trừ ký tự phân tách đơn vị. Có lẽ loại trừ 7F cũng như đó là một nhân vật điều khiển.
fgb

Xuất sắc! Tôi đã xóa tất cả các ký tự không phải ASCII phiền phức bằng cách sử dụng gói qdap R bằng cách sử dụng:mgsub("[^\x1F-\x7F]+", "", text_vector, fixed = FALSE)
Pablo Adames

22

Để xóa tất cả các ký tự không phải ASCII, bạn có thể sử dụng thay thế sau: [^\x00-\x7F]+

Loại bỏ phi ASCII

Để làm nổi bật các ký tự, tôi khuyên bạn nên sử dụng chức năng Đánh dấu trong cửa sổ tìm kiếm: điều này làm nổi bật các ký tự không phải ASCII và đặt dấu trang vào các dòng có chứa một trong số chúng

Thay vào đó, nếu bạn muốn làm nổi bật và đặt dấu trang vào các ký tự ASCII, bạn có thể sử dụng biểu thức chính quy [\x00-\x7F]để làm như vậy.

Làm nổi bật Non-ASCII

Chúc mừng


1
nếu bạn muốn sao chép biểu thức tìm kiếm [^ \ x00- \ x7F] +
hyena

2
Nếu bạn muốn giữ \ r và \ n - ký tự trả về và ký tự dòng - bạn có thể sử dụng biểu thức chính này: [\ x00- \ x09 \ x0B- \ x0C \ x0E- \ x1F] +
Steffen Winkler

4

Để giữ dòng mới:

  1. Đầu tiên chọn một ký tự cho dòng mới ... Tôi đã sử dụng #.
  2. Chọn tùy chọn thay thế, mở rộng.
  3. đầu vào \ n thay thế bằng #
  4. Nhấn Thay thế tất cả

Kế tiếp:

  1. Chọn Thay thế tùy chọn Biểu thức chính quy.
  2. Nhập cái này: [^ \ x20- \ x7E] +
  3. Giữ thay thế bằng sản phẩm nào
  4. Nhấn Thay thế tất cả

Bây giờ, chọn Thay thế tùy chọn Mở rộng và Thay thế # bằng \ n

:) bây giờ, bạn có tệp ASCII sạch;)


3

Một mẹo hay khác là vào chế độ UTF8 trong trình chỉnh sửa của bạn để bạn thực sự có thể nhìn thấy những ký tự ngộ nghĩnh này và tự xóa chúng.


1

Cách khác...

  1. Cài đặt plugin Text FX nếu bạn chưa có nó
  2. Chuyển đến tùy chọn menu TextFX -> zap tất cả các ký tự không in được thành #. Nó sẽ thay thế tất cả các ký tự không hợp lệ bằng các ký hiệu 3 #
  3. Chuyển đến Tìm / Thay thế và tìm kiếm ###. Thay thế nó bằng một không gian.

Điều này thật tuyệt nếu bạn không thể nhớ regex hoặc không quan tâm đến việc tìm kiếm nó. Nhưng regex được đề cập bởi những người khác là một giải pháp tốt là tốt.


Chuyển đổi tất cả các ký tự thay thế tất cả các loại dấu chấm câu bằng ###. Giải pháp tôi mong đợi là: Thay thế & & Thay thế bằng ". Thay thế '&' bằng ', v.v.
Kasim Husaini

Nó hoạt động tốt, tuy nhiên, công cụ thay thế các ký tự vui nhộn bằng một # char chứ không phải ba. làm ơn hãy ghi chú lại.
Raghav

1
Plugin Text FX không được dùng nữa và thậm chí có thể không còn khả dụng nữa. Xem ví dụ Tương lai của TextFX - "Khi danh sách phát triển đủ lâu, nó sẽ trở nên thiết thực để tạm biệt một con ngựa già đã phục vụ tốt cho cộng đồng."
Peter Mortensen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.