Ubah char ke huruf besar menggunakan ekspresi reguler (EditPad Pro)


159

Saya menulis ekspresi reguler dengan harapan bahwa saya akan dapat mengganti setiap pertandingan (yang hanya satu karakter) ke karakter utama. Saya menggunakan EditPad Pro (namun saya bersedia menggunakan alat lain yang memungkinkan saya melakukan ini, asalkan bebas untuk mencoba, karena saya hanya perlu melakukan ini sekali saja).

Latar Belakang: Saya memiliki file teks yang sangat panjang yang digunakan oleh aplikasi case-sensitive, dan beberapa kata mulai dengan huruf kecil alih-alih huruf besar, sehingga aplikasi macet. Ini akan memakan waktu yang sangat lama untuk dilakukan dengan tangan, dan itu akan sangat rumit untuk dilakukan tanpa ekspresi reguler karena kemunculan char (jahat) huruf kecil sangat spesifik.

Saya telah menulis ekspresi reguler pilih dan sekarang saya dapat menggunakannya dengan backreference ($ 1 berfungsi dengan baik) namun saya tidak dapat membuatnya mengganti dengan huruf besar char. Saya pikir sesuatu seperti \ u $ 1 akan berfungsi, tetapi itu tidak ada di EditPad Pro.

Jika tidak ada alat gratis yang memungkinkan saya untuk melakukan ini, saya kira alternatifnya adalah hanya melakukannya di C # namun saya agak terburu-buru dan tidak dekat kompiler, jadi saya harus mengunduh edisi ekspres terlebih dahulu, jadi ... Akan lebih baik untuk menemukan alat yang mendukung fitur seperti itu!

Terima kasih!


3
Apakah pertanyaan ini lebih cocok untuk Superuser?
georgiecasey

Jawaban:


273

TextPad akan memungkinkan Anda untuk melakukan operasi ini.

contoh:

test this sentence

Temukan apa: \([^ ]*\) \(.*\) Ganti dengan:\U\1\E \2

itu \Uakan menyebabkan semua karakter berikut berada di atas

yang \Eakan mematikan\U

hasilnya adalah:

TEST this sentence

13
Apakah ada cara untuk melakukan operasi ini di .NET Regex (tanpa menggunakan ToUpper)?
Shimmy Weitzhandler

34
Bekerja di notepad ++ juga.
Shawn

33
\U$1\Edalam Sublime Text
Qwerty

10
\U\1\Edalam Vim
J. Katzwinkel

6
Bekerja di PHPStorm juga. Saya memiliki persyaratan sebaliknya. Saya harus mengganti semua nilai atribut huruf besar (dari mungkin 90-an HTML) ke huruf kecil. Menggunakan \L$1\Ebekerja.
Ejaz

30

Saya tahu utas ini tentang EditPad Pro, tetapi saya datang ke sini karena saya memiliki kebutuhan yang sama dengan regexp javascript.

Untuk orang-orang yang ada di sini membutuhkan tip yang sama, Anda dapat menggunakan fungsi atau lambda sebagai argumen ganti.

Saya menggunakan fungsi di bawah ini untuk mengonversi nama css dengan -ke javascript yang setara, misalnya, "border-top"akan diubah menjadi "borderTop":

    s = s.replace(/\-[a-z]/g, x => x[1].toUpperCase());

26

EditPad Pro dan PowerGREP memiliki fitur unik yang memungkinkan Anda untuk mengubah kasus backreference. \U1menyisipkan backreference pertama dalam huruf besar, \L1dalam huruf kecil dan \F1dengan karakter pertama dalam huruf besar dan sisanya dalam huruf kecil. Akhirnya, \I1sisipkan dengan huruf pertama dari setiap kata dengan huruf besar, dan huruf lainnya dalam huruf kecil.

Sumber: Goyvaerts, Jan (2006). Ekspresi Reguler: Tutorial Lengkap . Lulu.com. hal. 35 . ISBN 1411677609. Google Buku. Diakses pada 25 Juni 2010.


6

Anda dapat melakukan ini di jEdit, dengan menggunakan opsi "Nilai pengembalian cuplikan BeanShell" di dialog temukan dan ganti jEdit. Cukup cari " [a-z]"dan ganti dengan " _0.toUpperCase()"(tanpa tanda kutip)


1
Respons Anda tidak benar-benar terkait dengan pertanyaan awal, tetapi saya menemukannya saat mencari di Google dan persis seperti yang saya cari. Keren terima kasih!
adietisheim

5

Anda juga dapat menggunakan huruf besar pada huruf pertama dari pertandingan menggunakan \I1dan \I2sebagainya, bukan $1dan $2.


1

Hanya contoh penggunaan lain untuk Notepad ++ (mode pencarian ekspresi reguler)

Find: (g|c|u|d)(et|reate|pdate|elete)_(.)([^\s (]+)
Replace: \U\1\E$2\U\3\E$4

Contoh:

get_user -> GetUser
create_user -> CreateUser
update_user -> UpdateUser
delete_user -> DeleteUser
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.