Xuất tất cả các kết hợp biểu thức chính quy trong Textpad hoặc Notepad ++ dưới dạng danh sách


28

Trong Textpad hoặc Notepad ++, có tùy chọn nào để xuất tất cả các kết quả khớp để tìm biểu thức chính quy, dưới dạng một danh sách không?

Trong một tệp văn bản lớn, tôi đang tìm kiếm các thẻ (các từ được bao trong %%), sử dụng biểu thức chính quy %\< and \>%và muốn tất cả các kết quả khớp dưới dạng một danh sách, để tôi có thể xóa các bản sao bằng Excel và nhận danh sách các thẻ duy nhất.


Nếu bạn sử dụng plugin RegexExtract cho Notepad ++, nó có thể loại bỏ các bản sao cho bạn và không cần phải xử lý hậu kỳ với Excel.
R. Schreurs

Câu trả lời:


53

Bạn có thể đạt được điều này bằng cách sử dụng chức năng Backreferences và Tìm và Đánh dấu trong Notepad ++.

  1. Tìm các kết quả bằng cách sử dụng regex (giả sử %(.*?)%) và thay thế nó bằng \n%\1%\n, sau đó, chúng ta sẽ có từ mục tiêu trong các dòng riêng biệt (nghĩa là không có dòng nào có nhiều hơn một từ phù hợp)

  2. Sử dụng chức năng Tìm kiếm -> Tìm -> Đánh dấu để đánh dấu từng dòng bằng regex %(.*?)%và nhớ đánh dấu ' Bookmark Line ' trước khi đánh dấu văn bản

  3. Chọn Tìm kiếm -> Đánh dấu -> Xóa các dòng không được đánh dấu
  4. Lưu văn bản còn lại. Đây là danh sách cần thiết.

Tôi có thêm một tệp với <> dưới dạng thẻ thay vì %%, tôi đã thử với <(. *?)> Và \ n <\ 1> \ n, nhưng nó không hoạt động, vui lòng trợ giúp.
Kiranshell

bạn được chào đón :) Đối với tôi nó hoạt động cho <> cũng. Có lồng nhau <> không? Bạn có thể giải thích chính xác những gì 'không hoạt động'?
Ankit

Tôi đang cố gắng tạo một danh sách các thẻ như trước đây nhưng những thẻ này đã từng có <>, tôi đang sử dụng <(. *?)> Thay vì% (. *?)% Và \ n <\ 1> \ n thay vì \ n % \ 1% \ n, đây là liên kết đến tệp mẫu wikisend.com/doad/158050/tags.txt
Kiranshell

Tôi đã thử lại với văn bản được cung cấp và sử dụng <(. *?)>, Nó hoạt động bình thường. Tôi đã nhận được danh sách các thẻ <Vật tư> <tên máy chủ> ..... và cứ thế
Ankit

Hãy đề cập đến lỗi chính xác / vấn đề bạn đang gặp phải. Có thể nghe có vẻ ngớ ngẩn nhưng hãy nhớ di chuyển con trỏ lên đầu. Tôi thường mắc lỗi đó và tìm kiếm không có kết quả ... :)
Ankit

5

Là làm điều này trong Notepad ++ là một yêu cầu bắt buộc? Bạn có trên Windows hoặc một số dạng Unix không? Nếu bạn đang ở trên Windows, bạn có thể thực hiện (một phần) từ Dấu nhắc Lệnh:

findstr / r "% [az]. * [az] %% [az]%" your_file > new_file

findstrđược truyền cảm hứng một cách mơ hồ grep, vì vậy new_file này sẽ chứa tất cả các dòng phù hợp với tiêu chí tìm kiếm của bạn; sau đó bạn có thể sử dụng Notepad ++ để loại bỏ văn bản không mong muốn (ở bên trái của% đầu tiên và bên phải của văn bản thứ hai).


Và, tất nhiên, nếu bạn trên Unix, bạn có thể thực hiện tác vụ tương đương sed.


từ xa câu trả lời tốt nhất!
Charles-Antoine Fournel

2

Có một plugin Notepad ++ có thể sao chép biểu thức regex phù hợp vào tệp mới trong tab mới. RegexExtract

Vì tôi không tìm thấy bất kỳ plugin nào cho Notepad ++ có thể trích xuất một số văn bản từ tài liệu hiện tại hoặc tất cả các tệp từ một vị trí có một số cài đặt bổ sung (như chuyển đổi trường hợp), tôi đã quyết định tự thử. (...) Giao diện plugin khá đơn giản (...). (...) Các trường "Tìm", "Thay thế" và "Mặt nạ" sử dụng cú pháp regex C ++ 11. Trích xuất từ ​​các tệp chỉ hoạt động ngay bây giờ cho những người trong UTF8.

Chỉnh sửa đầu vào Hộp thoại phù hợp với câu hỏi

nhập mô tả hình ảnh ở đây

Trong hình ảnh, bạn có thể thấy làm thế nào để điền vào hộp thoại. Tôi giả sử rằng một từ không chứa khoảng trắng, v.v., chỉ các ký tự khớp với \ w. Đáng chú ý:

  • Sử dụng một cặp dấu ngoặc, để cho phép chọn từ, không có các ký tự percetange.
  • Chọn tùy chọn Trích xuất với thay thế , để chọn trận đấu đầu tiên. Nếu không, bạn sẽ nhận được một đầu ra cột của tất cả $ 1, $ 2, v.v.
  • Kiểm tra Bỏ qua $ & ... để loại bỏ các trận đấu hoàn chỉnh.
  • Kiểm tra Bộ lọc duy nhất để báo cáo mỗi trận đấu chỉ một lần.
  • Nhấp vào Trích xuất để chọn kết quả. ( Tìm kiếm chỉ tìm thấy các trận đấu, nhưng không báo cáo).

Plug-in đẹp, làm chính xác những gì được yêu cầu.
R. Schreurs

Có vẻ không hoạt động với Notepad 64-bit
Ivan Chau

0

Trong TextPad, bạn sẽ mở Findhộp như bình thường, sau đó sử dụng Mark Allnút.

Từ đó, sử dụng Copy Bookmarked Lineschức năng. (Chỉnh sửa menu> Sao chép Khác> Dòng được đánh dấu.)


Cá nhân, tôi thực hiện thao tác chính xác đó thường xuyên đến nỗi tôi đã cấu hình một phím tắt cho chức năng Sao chép dòng được đánh dấu: Ctrl + Alt + c.
daveloyall

Tôi đến với Câu hỏi này vì tôi đang tìm kiếm câu hỏi Notepad ++. Sau nhiều năm là người dùng Textpad trung thành và không trả tiền, tôi chuyển sang Notepad ++ (GPL).
daveloyall
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.