2011-03-03 56 views

Trả lời

84

Find:

^[#;].* 

Replace with gì. Các ^ cho biết sự bắt đầu của một dòng, các [#;] là một lớp nhân vật để phù hợp với # hoặc ;.* khớp với bất kỳ điều gì khác trong dòng.

Trong các phiên bản của Notepad ++ trước 6.0, bạn sẽ không thể thực sự loại bỏ các dòng do giới hạn trong công cụ regex của nó; các kết quả thay thế trong các dòng trống cho mỗi dòng phù hợp. Nói cách khác, điều này:

 
# foo 
; bar 
statement; 

sẽ biến thành:

 


statement; 

Tuy nhiên, việc thay đổi sẽ làm việc trong Notepad ++ 6.0 nếu bạn thêm \r, \n hoặc \r\n đến cuối của mô hình, tùy thuộc vào mà dòng kết thúc tập tin của bạn đang sử dụng, kết quả là:

 
statement; 
+9

Bạn có thể thay thế các dòng trống bằng cách sử dụng Chế độ tìm kiếm "Mở rộng" và tìm \ r \ n \ r \ n. Nếu bạn để trống "thay thế bằng", bạn sẽ xóa các dòng trống. Hãy cẩn thận, vì điều này sẽ loại bỏ các dòng trống khác không được tạo bởi thay thế đầu tiên của bạn. – PaulF

+4

Kể từ notepad ++ 6, với hỗ trợ đầy đủ PCRE regex, tìm kiếm^(# |;). * \ R \ n và thay thế bằng trống (với tùy chọn regex được kích hoạt) hoạt động hoàn hảo – Tao

+0

@Tao: Cảm ơn lời nhắc - Tôi quên cập nhật tất cả các câu trả lời của Notepad ++ với hỗ trợ 6.0! Tôi sẽ đến sớm ... – BoltClock

2

có lẽ bạn nên thử

^[#;].*$ 

^ khớp với chế độ ăn xin, $ kết thúc.

+0

Sẽ không hoạt động, [xem scintilla] (http://www.scintilla.org/SciTERegEx.html). Các ký tự cuối dòng bị tước đi. – stema

5

Có thể, nhưng không trực tiếp.

Tóm lại, chuyển đến tìm kiếm, sử dụng regex của bạn, chọn "đánh dấu dòng" và nhấp "Tìm tất cả". Nó dẫn đến dấu trang cho tất cả các dòng đó.

Trong trình đơn tìm kiếm, có một điểm "xóa các dòng được đánh dấu".

Tôi tìm thấy câu trả lời ở đây (câu trả lời đúng là người thứ hai, không phải là chấp nhận!): How to delete specific lines on Notepad++?

+0

+1 cho liên kết –

5

Như những người khác đã lưu ý, trong Notepad ++ 6.0 và sau đó, người ta có thể sử dụng "Thay thế" tính năng để xóa tất cả các dòng bắt đầu bằng ";" hoặc là "#".

Tao cung cấp cụm từ thông dụng làm điểm xuất phát, nhưng nó không tính đến khoảng trắng có thể tồn tại trước dấu ";" hoặc ký tự "#" trên một dòng nhất định. Ví dụ: dòng bắt đầu bằng ";" hoặc "#" nhưng "tabbed-in" sẽ không bị xóa khi sử dụng biểu thức chính quy của Tao, ^(#|;).*\r\n.

Biểu thức chính quy của Tao không tính đến báo trước được đề cập trong câu trả lời của BoltClock: phương sai trong các ký tự dòng mới trên các hệ thống.

Cải tiến là sử dụng ^(\s)*(#|;).*(\r\n|\r|\n)?, chiếm khoảng trắng hàng đầu và chênh lệch ký tự dòng mới. Ngoài ra, mã vạch ? xử lý các trường hợp trong đó dòng cuối cùng của tệp bắt đầu bằng # hoặc ;, nhưng không kết thúc bằng một dòng mới.

Đối với những người tò mò, có thể phân biệt loại ký tự dòng mới được sử dụng trong một tài liệu cụ thể (và nhiều hơn một loại có thể được sử dụng): Xem -> Hiển thị biểu tượng -> Hiển thị kết thúc dòng.

+0

Regex bạn đề xuất có vẻ không thành công trong việc định vị dòng cuối cùng của tài liệu (nếu đó là dòng thích hợp). – maja

+1

Đẹp bắt, @maja! Thử thêm một '?' Vào cuối, như sau: '^ (\ s) * (# |;). * (\ R \ n | \ r | \ n)?'. Tôi sẽ cập nhật câu trả lời gốc cho phù hợp. Cảm ơn bạn! –

-1

Trong Notepad ++, bạn có thể sử dụng tab Đánh dấu trong Tìm đối thoại để Đánh dấu tất cả các dòng khớp với truy vấn của bạn có thể là regex hoặc bình thường (ký tự đại diện).

Sau đó, sử dụng Tìm kiếm> Dấu trang> Xóa các dòng được đánh dấu.

+0

Câu trả lời tương tự đã được viết bởi ** stema ** nhưng câu trả lời của bạn ở đây có ít thông tin hơn nhiều. Trong khi thêm câu trả lời mới cho câu hỏi cũ có thể tốt, họ chỉ hữu ích nếu họ cung cấp thông tin mới. Câu trả lời mà chỉ lặp lại câu trả lời khác không có giá trị, họ chỉ là lộn xộn. – AdrianHHH

Các vấn đề liên quan