Ekspor semua kecocokan ekspresi reguler di Textpad atau Notepad ++ sebagai daftar

28

Di Textpad atau Notepad ++ apakah ada opsi untuk mengekspor semua kecocokan untuk pencarian ekspresi reguler, sebagai satu daftar?

Dalam file teks besar, saya mencari tag (kata-kata terlampir dalam%%), menggunakan ekspresi reguler %\< and \>%, dan ingin semua kecocokan sebagai daftar tunggal, sehingga saya dapat menghapus duplikat menggunakan Excel dan mendapatkan daftar tag unik.

Kiranshell
sumber
Jika Anda menggunakan plugin RegexExtract untuk Notepad ++, itu dapat menghapus duplikat untuk Anda dan tidak perlu memposting proses dengan Excel.
R. Schreurs

Jawaban:

53

Anda dapat mencapai ini dengan menggunakan Backreferences dan fungsi Find and Mark di Notepad ++.

  1. Temukan kecocokan menggunakan regex (katakanlah %(.*?)%) dan ganti dengan \n%\1%\n, setelah ini kita akan memiliki kata target di baris yang berbeda (yaitu tidak ada baris yang memiliki lebih dari satu kata yang cocok)

  2. Gunakan Pencarian -> Temukan -> Tandai fungsionalitas untuk menandai setiap baris dengan regex %(.*?)%dan ingatlah untuk mencentang ' Bookmark Line ' sebelum menandai teks

  3. Pilih Cari -> Bookmark -> Hapus Garis Tidak Bertanda
  4. Simpan teks yang tersisa. Ini adalah daftar yang diperlukan.
Ankit
sumber
Saya punya satu file lagi dengan <> sebagai tag daripada%%, saya coba dengan <(. *?)> Dan \ n <\ 1> \ n, tetapi tidak berfungsi, tolong bantu.
Kiranshell
terima kasih :) Bagi saya ini berfungsi untuk <> juga. Apakah ada Nested <>? Bisakah Anda menguraikan apa sebenarnya yang 'tidak berfungsi'?
Ankit
Saya mencoba membuat daftar tag seperti sebelumnya tetapi ini dulu memiliki <>, saya menggunakan <(. *?)> Alih-alih% (. *?)% Dan \ n <\ 1> \ n alih-alih \ n % \ 1% \ n, ini adalah tautan ke file contoh wikisend.com/download/158050/tags.txt
Kiranshell
Saya mencobanya lagi dengan teks yang disediakan dan menggunakan <(. *?)>, Ini berfungsi secara normal. Saya mendapat daftar tag <Supplies> <hostname> ..... dan seterusnya
Ankit
Harap sebutkan kesalahan / masalah yang Anda alami. Mungkin terdengar konyol tapi ingat untuk memindahkan kursor ke atas. Saya sering melakukan kesalahan itu dan pencarian tidak membuahkan hasil ... :)
Ankit
5

Apakah melakukan ini di Notepad ++ persyaratan wajib? Apakah Anda menggunakan Windows atau Unix? Jika Anda menggunakan Windows, Anda dapat melakukannya (sebagian) dari Command Prompt:

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

findstrsecara samar-samar terinspirasi oleh grep, jadi new_file ini akan berisi semua baris yang cocok dengan kriteria pencarian Anda; Anda kemudian dapat menggunakan Notepad ++ untuk menghapus teks yang tidak diinginkan (di sebelah kiri% pertama dan di sebelah kanan yang kedua).


Dan, tentu saja, jika Anda menggunakan Unix, Anda dapat melakukan tugas yang setara dengannya sed.

Scott
sumber
dari jauh jawaban terbaik!
Charles-Antoine Fournel
2

Ada plugin Notepad ++ yang dapat menyalin ekspresi regex yang cocok ke file baru di tab baru. RegexExtract

Karena saya tidak menemukan plugin untuk Notepad ++ yang dapat mengekstraksi beberapa teks dari dokumen saat ini atau semua file dari lokasi dengan beberapa pengaturan tambahan (seperti konversi kasus), saya memutuskan untuk mencoba membuatnya sendiri. (...) Antarmuka plugin cukup mudah (...). (...) Kolom "Temukan", "Ganti" dan "Mask" menggunakan sintaks regex C ++ 11. Mengekstrak dari file berfungsi sekarang hanya untuk yang ada di UTF8.

Edit masukan Dialog yang disesuaikan dengan pertanyaan

masukkan deskripsi gambar di sini

Pada gambar Anda dapat melihat cara mengisi dialog. Saya berasumsi bahwa sebuah kata tidak mengandung spasi, dll., Hanya karakter yang cocok dengan \ w. Terutama:

  • Gunakan sepasang tanda kurung, untuk memungkinkan memilih kata, tanpa karakter yang ditentukan.
  • Pilih opsi Ekstrak dengan ganti , untuk memilih pasangan pertama. Jika tidak, Anda akan mendapatkan output kolom semua $ 1, $ 2, dll.
  • Centang Abaikan $ & ... untuk meninggalkan pertandingan yang lengkap.
  • Periksa Filter unik untuk melaporkan setiap pertandingan hanya sekali.
  • Klik Ekstrak untuk memilih dapatkan hasil. ( Pencarian hanya menemukan kecocokan, tetapi tidak melaporkan).
Greck
sumber
Plug-in yang bagus, melakukan apa yang diminta.
R. Schreurs
Tampaknya tidak berfungsi dengan Notepad 64-bit ++
Ivan Chau
0

Di TextPad, Anda akan membuka Findkotak seperti biasa, lalu gunakan Mark Alltombol.

Dari sana, gunakan Copy Bookmarked Linesfungsi. (Edit menu> Salin Lainnya> Baris yang Ditandai.)

Daveloyall
sumber
Secara pribadi, saya melakukan operasi tepat begitu sering sehingga saya telah mengkonfigurasi pintasan keyboard untuk fungsi Copy Bookmarked Lines: Ctrl + Alt + c.
daveloyall
Saya sampai pada Pertanyaan ini karena saya mencari pertanyaan Notepad ++. Setelah bertahun-tahun sebagai pengguna Textpad yang loyal dan tidak membayar, saya beralih ke Notepad ++ (GPL).
daveloyall