Dalam gerhana, apakah mungkin menggunakan string pencarian yang cocok sebagai bagian dari string pengganti saat melakukan pencarian ekspresi reguler dan penggantian?
Pada dasarnya, saya ingin mengganti semua kemunculan
variableName.someMethod()
dengan:
((TypeName)variableName.someMethod())
Di mana variableName dapat berupa nama variabel apa saja.
Dalam sed aku bisa menggunakan sesuatu seperti:
s/[a-zA-Z]+\.someMethod\(\)/((TypeName)&)/g
Yaitu, & mewakili string pencarian yang cocok. Apakah ada yang serupa di Eclipse?
Terima kasih!
Jawaban:
Ya, "()" menangkap sebuah grup. Anda dapat menggunakannya lagi dengan $ i di mana saya adalah grup penangkapan ke-i.
Begitu:
Petunjuk: CTRL+ Spacedi kotak teks memberi Anda semua jenis saran untuk penulisan ekspresi reguler.
sumber
stringVar.equals("xxx")
dengan"xxx".equals(stringVar)
. Saya menggunakan regex berikut dalam dialog temukan / ganti:search: ([^()! ]+).equals\("(.*)"\)
,replace: "$2".equals\($1\)
.Menggunakan ...
search = (^. * Import) (. *) (\ (. * \) :)
ganti = $ 1 $ 2
... menggantikan ...
...dengan...
Blok dalam ekspresi reguler digambarkan dengan tanda kurung (yang tidak didahului dengan "\")
(^. * Import) menemukan "dari check import" dan memuatnya ke $ 1 (gerhana mulai dihitung pada 1)
(. *) Temukan berikutnya " semuanya "sampai pertemuan berikutnya" ("dan memuatnya ke $ 2. $ 2 berhenti di" ("karena bagian berikutnya (lihat baris berikutnya di bawah)
(\ (. * \) :) mengatakan" saat pertama kali ditemukan "( "setelah memulai blok $ 2 ... hentikan blok $ 2 dan mulai $ 3. $ 3 dimuat dengan" ('teks apa pun'): "atau, dalam contoh," (_list): "
Kemudian di ganti, cukup letakkan $ 1 $ 2 untuk mengganti ketiga blok hanya dengan dua yang pertama.
sumber
NomeN telah menjawab dengan benar, tetapi jawaban ini tidak akan banyak berguna untuk pemula seperti saya karena kita akan memiliki masalah lain yang harus diselesaikan dan kita tidak akan tahu bagaimana menggunakan RegEx di sana. Jadi saya menambahkan sedikit penjelasan untuk ini. Jawabannya adalah
Sini:
Dalam pencarian:
'(' ')' Pertama dan terakhir menggambarkan grup dalam ekspresi reguler
'\ w' menggambarkan kata-kata (alfanumerik + garis bawah)
'+' menggambarkan satu atau lebih (yaitu satu atau lebih alfanumerik + garis bawah)
'.' adalah karakter khusus yang menggambarkan karakter apa pun (mis. + berarti satu atau lebih karakter apa pun). Karena ini adalah karakter khusus untuk menggambarkan '.' kita harus memberikan karakter pelarian dengannya, yaitu '.'
'someMethod' diberikan seperti yang akan dicari.
Kedua tanda kurung '(', ')' diberikan bersama dengan karakter escape karena merupakan karakter khusus yang digunakan untuk menggambarkan sebuah grup (kita akan membahas tentang grup di poin selanjutnya)
Sebagai pengganti:
Diberikan ' ((TypeName) $ 1) ', di sini $ 1 menggambarkan grup. Itu adalah semua karakter yang diapit dalam tanda kurung pertama dan terakhir '(', ')' di bidang pencarian
Pastikan juga Anda telah mencentang opsi 'Ekspresi reguler' di kotak cari ganti
Informasi lebih lanjut tentang RegEx dapat ditemukan di http://regexr.com/ .
sumber
Setidaknya di grup STS (SpringSource Tool Suite) diberi nomor mulai dari 0, jadi ganti string akan diberi nomor
sumber
Untuk seseorang yang membutuhkan penjelasan dan contoh bagaimana menggunakan regxp di Eclipse. Berikut adalah contoh saya yang menggambarkan masalah tersebut.
Saya ingin mengganti nama
untuk
Dan bisa ada beberapa di antaranya.
Berikut adalah cara melakukannya.
Kemudian tekan tombol temukan / ganti
sumber