Temukan dan Ganti teks antara ^ dan ~ di Notepad ++

22

Saya memiliki file teks besar di mana saya ingin menghapus semua teks antara simbol ^ dan simbol ~. Ini perlu bekerja lintas jalur juga.

Saya mencoba melakukan Temukan dan Ganti menggunakan ^*~di kotak Temukan dan tidak ada di kotak Ganti tetapi hasilnya 0.

Kemegahan
sumber

Jawaban:

24

Ini tidak mungkin dengan Find and Replace biasa . Jika Anda menggunakan Notepad ++ 6, Anda dapat memanfaatkan mesin regex baru yang mendukung PCRE ( sumber ).

Tekan Ctrl+ Huntuk membuka dialog Temukan dan Ganti dan lakukan tindakan berikut:

Find what:          \^.*?~
Replace with:       
Wrap around:        checked
Regular expression: selected
. matches newline:  checked

Sekarang tekan Alt+ Auntuk mengganti semua kemunculan.

Ekspresi reguler di Temukan apa yang dikomposisi sebagai berikut:

  • \^adalah literal ^ .
  • .*? adalah jumlah karakter paling sedikit yang memungkinkan persamaan reguler untuk cocok.
  • ~adalah literal ~ .
Dennis
sumber
3
jika Anda berubah. *? ~ ke [^ ~] * ~ maka itu akan berfungsi tanpa memerlukan / menggunakan PCRE.
barlop
1
@barlop: Saya menggunakan Find and Replace sebagai Mode Pencarian: Normal , bukan Find and Replace menggunakan ekspresi reguler. Itu mungkin salah paham. Bagaimanapun, jika saya ingat dengan benar, versi sebelum 6 tidak mendukung pola multi-line.
Dennis
The .*?pola bekerja bagi saya untuk mencari antara karakter ;dan <. Jadi pencariannya adalah FIND ;.*?<REPLACE ;dengan opsi yang dipilih untuk Regular expressiondan. matches new line
SherlockSpreadsheets
8

Anda akan ingin mencari \^.*?~dan memastikan . cocok dengan baris baru diaktifkan:

masukkan deskripsi gambar di sini

Ini karena ^memiliki makna khusus, cocok dengan awal garis. Jadi, kita perlu menghindarinya dengan backslash \^.

Menulis ^*akan cocok dengan "sejumlah awal baris dalam satu baris". .*cocok dengan "karakter apa saja", tetapi secara default tidak cocok dengan baris baru.

Der Hochstapler
sumber
2
Berhati-hatilah dengan perilaku serakah regex. Jika ada beberapa ~karakter (atau mis. Beberapa pertandingan) ini akan cocok dengan yang pertama ^sampai yang terakhir ~.
heavyd
@heavyd <pertanyaan> Anda yakin? </pertanyaan>. Dia telah menggunakan *?yang tidak serakah itu malas .*?~tidak akan pernah cocok dengan lebih dari satu ~. Jadi tidak apa-apa.
barlop
@barlop: Dia berkomentar tak lama setelah saya menjawab. Itu adalah suntingan ninja.
Der Hochstapler
2

Coba gunakan regex ini di bagian temukan \^[^~]*~ untuk mengganti semuanya antara ^ dan ~ secara inklusif.

barlop
sumber
dan secara eksklusif, maka saya kira itu membutuhkan PCRE, lalu lakukan sesuatu (? <= ^) [^ ~] * (? = ~) Saya tidak punya n ++ untuk mengujinya, tetapi jika itu gagal coba ubah (? <= ^ ) ke (? <= \ ^)
barlop
Secara eksklusif, ganti saja dengan ^~.
Dennis
@ Dennis Maksud saya jika dia ingin mengganti semuanya antara ^ dan ~ tetapi tidak termasuk ^ dan ~
barlop
1
Bukankah itu yang Anda dapatkan jika Anda mengganti \^[^~]*~dengan ^~?
Dennis
@ Dennis oh saya mengerti maksud Anda, poin bagus.
barlop
0

Saya memiliki persyaratan penggantian ANTARA yang serupa dengan karakter awal dan akhir. Ini datang dari email prospek; hundereds anggota dan saya hanya ingin nama-nama orang dengan segala sesuatu yang dihapus antara <RemoveTextHere> .

Asli

First1 Last1 <[email protected]>; First2 Last2 <[email protected]>; First3 Last3 <[email protected]>; First4 Last4 <[email protected]>;

Dennis dekat dengan solusi saya, Find what: \^.*?~tetapi saya harus mengubah karakter literal saya Find what: \<.*?>kemudian saya harus menghapus garis miring pertama Find what: <.*?>.

Diperbarui Find what: <.*?> ; Ganti kosong

First1 Last1 ; First2 Last2 ; First3 Last3 ; First4 Last4

_

Karakter Khusus : *, $, \, +, ^, (dan ), [, ], {dan}

Karakter khusus dijelaskan oleh Jerry Jeremiah di sini /programming/37742519/notepad-wildcard .

Lembar kerja Sherlock
sumber
Itu tidak menjawab pertanyaan.
Toto