Làm cách nào để xóa các dòng mà không có. trong Notepad ++? [bản sao]


11

Trong Notepad ++, tôi có nhiều dòng ở định dạng:

abc.xyz

trong đó "abc" có thể có khoảng trắng hoặc - hoặc số.

Làm cách nào để xóa các dòng mà không có "."? Vì vậy, nếu một dòng không có bất kỳ ".", Tôi muốn nó bị xóa hoàn toàn, thậm chí không để lại một dòng trống.

Câu trả lời:


40

Làm thế nào để xóa dòng mà không có .?

  • Menu "Tìm kiếm"> "Thay thế" (hoặc Ctrl+ H)

  • Đặt "Tìm gì" thành ^[^\.]*\r\n

    • Bạn có thể thay thế \r\nbằng các biểu thức thông thường EOL (Cuối dòng) khác nhau tùy thuộc vào các EOL trong tệp của bạn (xem "Tôi có một EOL khác trong tệp của mình, tôi có thể làm gì?" Và "Tôi không quan tâm EOLs sử dụng tệp của tôi , tôi có thể làm gì? "bên dưới).
  • Xóa "Thay thế bằng"

  • Bật "Biểu thức chính quy"

  • Nhấp vào "Thay thế tất cả"

    Hình ảnh

Ghi chú:

  • Ở trên giả định rằng dòng cuối cùng trong tệp có EOL kéo dài.

  • Ở trên cũng giả sử bạn đang chỉnh sửa tệp văn bản với Windows EOLs \r\n.

Trước :

abc.xyz
abcdef
abc 123.xyz
abc 123def

Sau :

abc.xyz
abc 123.xyz

Tôi có một EOL khác trong tệp của mình, tôi có thể làm gì?

  • Windows EOL là \r\n.

  • Nếu bạn đang sử dụng các tệp có EOL khác, bạn có thể chuyển đổi chúng sang Windows EOL bằng Menu "Chỉnh sửa"> "Chuyển đổi EOL".

  • Nếu bạn không làm việc với Windows EOL và bạn không muốn chuyển đổi chúng, thay vào đó hãy sử dụng cách sau:

    • Sử dụng \nthay vì \r\ncho Unix / OS X EOLs

    • Sử dụng \rthay vì \r\ncho Mac OS (tối đa phiên bản 9) EOL


Tôi không biết hoặc quan tâm EOLs mà tập tin của tôi sử dụng, tôi có thể làm gì?

  • Bạn có thể sử dụng \Rhoặc (?:\r\n?|\n)hoặc (?:\r?\n?)thay vì \r\n. Điều này xoay quanh bất kỳ vấn đề nào với các EOL thực sự được sử dụng trong tệp.

  • Bạn cũng có thể sử dụng (?:\r?\n?|$). Biểu thức này sẽ hoạt động nếu không có EOL trong dòng cuối cùng của tệp.


đọc thêm


5
Bạn có thể sử dụng \ R để khớp với bất kỳ ngắt dòng nào.
dùng694733

@ user694733 Hãy giải thích? \rkhông khớp với EOL trên Windows. Nếu bạn loại bỏ, \nbạn còn lại với các dòng trống. OP Stated "Tôi muốn nó được gỡ bỏ hoàn toàn, thậm chí không để lại một dòng trống."
DavidPostill

Uppercase R. N ++ sử dụng PCRE có lớp nhân vật đặc biệt nếu bộ nhớ của tôi phục vụ tôi đúng.
user694733

@ người dùng694733 À. ĐỒNG Ý. Đã thử nghiệm và nó hoạt động.
DavidPostill

regex101.com là một trang web tốt hơn để học regex hơn regexexr
mèo

14

Câu trả lời được chấp nhận là chính xác, nhưng bạn sẽ không luôn có sẵn regex. Vì vậy, tôi trình bày một giải pháp đơn giản hơn.

  1. Ctrl+ F- nhấp vào tab Đánh dấu
  2. Đặt "Tìm gì" thành .
  3. Kiểm tra tùy chọn "Dòng đánh dấu" (lịch sự của Wrass)
  4. Chế độ tìm kiếm = Bình thường
  5. Nhấp vào Đánh dấu tất cả -> Bạn sẽ thấy một vòng tròn màu xanh bên cạnh số dòng được đánh dấu.
  6. Sau đó điều hướng đến menu Tìm kiếm -> Đánh dấu -> Xóa các dòng không được đánh dấu.

Đây là một thay thế đơn giản tốt đẹp, tuy nhiên bạn có thể muốn đề cập rằng bạn cũng nên kiểm tra tùy chọn 'Dòng đánh dấu' trong hộp thoại Đánh dấu. Không làm như vậy sẽ dẫn đến tất cả các dòng bị loại bỏ.
Wrass

Điểm hay, notepad của tôi đã nhớ nó từ lần trước, vì vậy tôi đã quên mất điều đó.
Zikato

Tôi sử dụng regex mọi lúc, nhưng tôi vẫn sẽ sử dụng phương pháp này vì sự đơn giản của nó. Tuyên bố miễn trừ trách nhiệm: Tôi cũng sử dụng nhiều chức năng đánh dấu khác nhau trong Notepad ++.
JPhi1618

Vì bạn không hài lòng với định dạng của mình, tôi đã gửi một bản chỉnh sửa mà tôi nghĩ bạn sẽ thấy dễ chịu hơn. Hãy từ chối nó hoặc quay lại nếu bạn không đồng ý.
jpmc26
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.