Bagaimana cara menggunakan regex untuk mengganti huruf besar dengan huruf kecil di Intellij IDEA?

92

Saya telah mencari di Google untuk ini dan menemukan cara melakukannya dengan parser regex lainnya:

http://vim.wikia.com/wiki/Changing_case_with_regular_expressions
http://www.regular-expressions.info/replacecase.html

Saya sudah mencoba ini dan tidak ada yang berhasil. Sebagai contoh, saya ingin menggunakan regex untuk mengubah ini:

private String Name;
private Integer Bar = 2;

Untuk ini:

private String name;
private Integer bar = 2;

Saya mencoba sesuatu seperti ini:

replace: private (\S+) (\S+)
with: private $1 $L$2
with: private $1 \L$2
with: <etc.>

Tak satu pun dari mereka berhasil. Apakah mungkin melakukan ini di intellij, atau apakah ini fitur yang hilang? Ini hanya untuk tujuan pendidikan dan teladannya dibuat-buat. Saya hanya ingin tahu apakah ini mungkin dilakukan di intellij.

Daniel Kaplan
sumber
3
Apakah ada alasan Anda ingin menggunakan regex? IntelliJ memang memiliki pintasan tombol cepat untuk melakukan itu.
ajp15243
@ ajp15243 Ini hanya untuk tujuan pendidikan dan contoh dibuat-buat. Saya benar-benar ingin tahu apakah ini mungkin dilakukan di intellij.
Daniel Kaplan
3
Cukup adil! Hanya ingin memastikan. Saya menemukan referensi IntelliJ Regex Syntax , dan di komentar, seseorang sepertinya menanyakan pertanyaan yang sama dengan Anda. Seorang moderator menjawab (dan saya pikir sedikit salah paham), tetapi jawaban tersebut menunjukkan bahwa hal ini tidak mungkin dilakukan dengan sintaks regex IntelliJ.
ajp15243
Anda selalu bisa menulis plugin untuk itu.
Meo
1
@tieTYT gaoagong's cukup bagus, saya akan membiarkan dia memilikinya :).
ajp15243

Jawaban:

174

Dalam IDEA 15 Anda dapat menggunakan sakelar di bawah ini untuk mengganti kasus ekspresi yang ditangkap. Ini sekarang secara resmi didokumentasikan sejak versi ini dirilis.

  • \l: menurunkan kasus dari satu karakter berikutnya
  • \u: up kasus satu karakter berikutnya
  • \L: kecilkan huruf besar-kecil dari karakter berikutnya hingga a \Eatau akhir string pengganti
  • \U: naikkan kasus karakter berikutnya hingga a \Eatau akhir string pengganti
  • \E: menandai akhir dari perubahan kasus yang dimulai oleh \Uatau\L

Berikut adalah contoh penggunaan (karena dokumentasinya tidak jelas):

temukan: (\ w + _) + (\ w +) ganti: \ L $ 1 $ 2 \ E

Di atas akan dikonversi FOO_BAR_BAZke foo_bar_bazdll. $ 1 mengacu pada grup penangkapan pertama yang ditemukan (dalam tanda kurung), $ 2 ke set kedua, dll.

Demi anak cucu: ini awalnya dilaporkan oleh @gaoagong dan didokumentasikan di sana .

desseim
sumber
13

Mencari jawabannya dan kemudian menyadari bahwa @ ajp15243 sudah menjawab ini di atas. Saat ini Intellij tidak dapat menggunakan fitur pengganti regex untuk mengubah kapitalisasi huruf. Ada pembahasan singkat di URL berikut tentang fitur tersebut.

http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html

Anda juga dapat memilih fitur dalam masalah Youtrack di sini:

http://youtrack.jetbrains.com/issue/IDEA-70451

Ada plugin regex Intellij, tapi sayangnya itu juga tidak mendukung casing bawah dan atas.

http://plugins.jetbrains.com/plugin/19?pr=idea

Anda mungkin hanya perlu menjalankan file melalui program perl untuk menggantinya dengan benar.

gaoagong
sumber
1
Menurut jalur Anda, ini ditambahkan dalam versi 15 dari IntelliJ
Kevin Sheehan
6

Saya mulai menggunakan plugin Idea Vim dan belajar melakukan hal-hal seperti ini di Vim. Dengan cara ini saya dapat menggunakan kembali keterampilan ini di luar Ide.

Berikut adalah perintah vim untuk melakukan apa yang Anda minta.

:%s/private\s\(\w*\)\s\(w*\)/private \1 \L\2/g

Regex sedang dimasukkan dalam IDE. Garis miring ekstra diperlukan untuk keluar dari pola regex ke Vim.

Di dalam IDE

Temukan Plugin dari dalam IDE. masukkan deskripsi gambar di sini

chinto
sumber
2
Solusi besar yang mungkin tidak akan membantu 99% orang di sini karena mereka tidak ingin menggunakan emulasi VIM. Tapi, kebetulan saya sudah menginstal plugin ini sehingga berfungsi untuk saya :)
Daniel Kaplan
1
Aku tahu .. Vi dan Vim tampak seperti kejahatan yang tidak berguna pada awalnya bagi siapa pun yang menggunakan IDE. Saya akhirnya mulai belajar Vi setelah menemui mereka semua di server. Saya agak suka sekarang karena saya tidak perlu mengganti pola pikir saat saya berpindah antar alat.
chinto
Saya baru saja mulai, belum lancar. Apakah menurut Anda Anda lebih produktif mengedit di Intellij-IDEA dengan IDEAVim daripada sebelum Anda menggunakan Vi?
Daniel Kaplan
1
Lebih banyak lagi .. Dulu aku jago gerhana. Kemudian pindah ke Intellij dan mempelajari sebagian besar triknya. Kemudian menyadari belajar Vim akan membuat saya baik di Server dan Workstation sekaligus. Saya juga melihat bahwa Vim jauh lebih kuat dalam manipulasi teks dan navigasi. Saya masih menggunakan cara pintas IDE untuk semua spesialisasi IDE seperti refactoring dan mencari referensi dan pergi ke def dll. Ini sangat penting untuk beralih antar mode sekalipun.
chinto
1
Ini adalah solusi yang sangat baik untuk orang yang tahu bagaimana menggunakan vi. Saya mengaktifkan IdeaVim ketika saya perlu melakukan substitusi yang kompleks, lalu mundur lagi untuk menikmati fitur editor Idea sendiri. Saya berharap IdeaVim memiliki indikator untuk ditampilkan saat aktif.
Tn. Lance E Sloan