Bagaimana cara mengganti semua string menjadi angka yang terdapat di setiap string di Notepad ++?

108

Saya mencoba menemukan semua nilai dengan pola berikut:

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

dan menggantinya dengan value inside scopes.

Saya menggunakan regex berikut untuk menemukan polanya:

.*"\d+"

Bagaimana saya bisa melakukan penggantian?

Anton Selin
sumber
2
Apa bagian penggantinya? Bisakah Anda memberi contoh?
Toto
^. * value = "([^"] *) ". * $ periksa regex ini dan ganti nilai \ 1 di mana nilai yang dibutuhkan
Nikhil KS

Jawaban:

191

Di Notepad ++ untuk mengganti, tekan Ctrl+ Huntuk membuka menu Ganti.

Kemudian jika Anda mencentang tombol "Ekspresi reguler" dan ingin pengganti Anda menggunakan bagian dari pola pencocokan Anda, Anda harus menggunakan "grup tangkap" (baca lebih lanjut di google ). Misalnya, Anda ingin mencocokkan setiap baris berikut

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

menggunakan .*"\d+"pola dan ingin menyimpan hanya nomornya. Anda kemudian dapat menggunakan grup tangkapan dalam pola pencocokan Anda, menggunakan tanda kurung (dan ), seperti itu: .*"(\d+)". Jadi sekarang dalam pengganti Anda, Anda cukup menulis $1, di mana $ 1 merujuk ke nilai grup penangkap pertama dan akan mengembalikan nomor untuk setiap pertandingan yang berhasil. Jika Anda memiliki dua grup penangkapan, misalnya (.*)="(\d+)", $1akan mengembalikan string valuedan $2akan mengembalikan nomornya.

Jadi dengan menggunakan:

Temukan: .*"(\d+)"

Menggantikan: $1

Itu akan mengembalikanmu

4
403
200
201
116
15

Harap dicatat bahwa ada banyak cara alternatif dan lebih baik untuk mencocokkan pola yang disebutkan di atas. Misalnya polanya value="([0-9]+)"akan lebih baik, karena lebih spesifik dan Anda akan yakin bahwa itu hanya cocok dengan garis-garis ini. Bahkan dimungkinkan untuk melakukan penggantian tanpa menggunakan grup penangkapan, tetapi ini adalah topik yang sedikit lebih maju, jadi saya akan meninggalkannya untuk saat ini :)

psxls
sumber
19
Untuk mengganti, $1tidak berhasil untuk saya. Saya menggunakan \1sebagai gantinya dan itu berhasil.
Jason Wheeler
12
\1Bekerja di semua versi Notepad ++. $1hanya berfungsi di yang lebih baru.
Cullub
Saya menduga ini tidak berfungsi dengan Hex Editorplugin. Dalam mode tampilan hex, Notepad ++ tidak menampilkan Regular Expressionopsi untuk Cari / Ganti. Dalam mode tampilan teks, saya melihat Regular Expressionopsi untuk Cari / Ganti. Saya menggunakan Notepad ++ Versi 6.9.2, yang merupakan versi terbaru saat ini.
Kevin Fegan
15

psxls memberikan jawaban yang bagus tetapi saya pikir versi Notepad ++ saya sedikit berbeda sehingga penangkapan $ (tanda dolar) tidak berfungsi.

Saya memiliki Notepad ++ v.5.9.3 dan inilah cara Anda dapat menyelesaikan tugas Anda:

Cari pola: value = \ "([0-9] *) \" Dan ganti dengan: \ 1 (apa pun yang ingin Anda lakukan di sekitar grup penangkap itu)

Ex. Dikelilingi dengan tanda kurung siku

[\ 1] -> akan menghasilkan nilai = "[4]"

dchayka.dll
sumber
1
\1Membantu saya menyimpan nomornya tetapi menghapus kutipan di belakangnya. Saya memiliki 7400 baris dalam dokumen seperti tablename.columnname = '12345'. Kutipan pertama mudah untuk dihapus, yang kedua dilakukan menggunakan Anda \1di kotak teks ganti. Terima kasih, +1
Ben Fransen
6

Menggantikan (.*")\d+(")

Dengan $1x$2

Di mana x"nilai di dalam cakupan" Anda.

marsze
sumber
0

Saya memiliki Notepad ++ v6.8.8

Temukan : [([a-zA-Z])]

Ganti : [\ '\ 1 \']

Akan menghasilkan: $ array [XYZ] => $ array ['XYZ']

Juan Tapiador
sumber
-3

Temukan: value="([\d]+|[\d])"

Menggantikan: \1

Itu benar-benar akan mengembalikanmu

4
403
200
201
116
15

js:

a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"';
a = a.replace(/value="([\d]+|[\d])"/g, '$1');
console.log(a);
pengguna3178007
sumber
3
Bagaimana solusi JavaScript ini terkait dengan pertanyaan yang ditandai dengan Notepad ++?
Jason Aller
Bagaimana tanggapan 1 dan 2 yang salah dan rusak dapat berhubungan dengan pertanyaan yang ditandai dengan Notepad ++?
pengguna3178007
Mengapa saya mengajukan pertanyaan di sini? Karena saya tidak bisa membuat pertanyaan. Karena skor reputasi saya kurang.
pengguna3178007
1
Tidak ada persyaratan reputasi seperti itu untuk mengajukan pertanyaan seperti yang Anda klaim - Anda tidak mungkin dibatasi. Coba lagi: stackoverflow.com/questions/ask
BoltClock
Pertanyaan sudah ditanyakan. stackoverflow.com/questions/24112018/… Namun terbatas pada kata-kata yang dicari. Batasan adalah!
pengguna3178007