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.

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 ~ .

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.


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.


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 <First1.Last1@email.com>; First2 Last2 <First2.Last2@email.com>; First3 Last3 <First3.Last3@email.com>; First4 Last4 <First4.Last4@email.com>;

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 .


Itu tidak menjawab pertanyaan.
Toto
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.