Regex ganti huruf besar dengan huruf kecil


220

Saya mencoba mengganti huruf besar dengan huruf kecil yang sesuai menggunakan regex. Yang seperti itu

EarTH:   1,
MerCury: 0.2408467,
venuS:   0.61519726,

menjadi

earth:   1,
mercury: 0.2408467,
venus:   0.61519726,

dalam Teks Sublim. Bagaimana saya bisa menurunkan huruf hanya dalam kata-kata yang mengandung huruf kecil dan besar? Sehingga itu mempengaruhi venUsdan tidak VENUS.

Jawaban:


393

Kamu boleh:

Temukan: (\w) Ganti Dengan:\L$1

Atau pilih teks, ctrl+ K+ L.


7
super. sangat berguna. Bisakah Anda arahkan ke beberapa sumber daya yang mencantumkan transformasi seperti '\ L'?
Codious-JR

17
Sublime menggunakan Boost untuk dukungan RegEx, ini adalah dokumen untuk string format seperti \ L: boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/…
Alex K.

4
Dan di IntelliJ
Patrick

11
Catatan: Untuk pergi ke huruf besar, Anda perlu\U
takanuva15

2
Untuk huruf kecil satu parameter, masukkan \ E setelahnya untuk mengakhiri bagian huruf kecil: $1\L$2\E$3
Michael

129

Saya pikir ini mungkin berguna bagi orang lain juga:

Temukan:

  • ([A-Z])(.*)

menggantikan:

  • \L$1$2-> akan mengonversi semua huruf menjadi $1dan $2menjadi huruf kecil
    TAPI
  • \l$1$2-> hanya akan mengonversi huruf pertama $1menjadi huruf kecil dan membiarkan yang lainnya apa adanya

Hal yang sama berlaku untuk huruf besar dengan \Udan\u


7
\l$1$2hanya akan membuat keseluruhan $1dalam huruf kecil dalam kasus ini di sini, karena $ihanya berisi satu huruf. \l=> Huruf pertama berikut untuk huruf kecil dan \u=> Huruf pertama berikut ke huruf besar. Di mana \Udan \Imelakukannya untuk semua surat berikut.
Raisch

5
Perhatikan bahwa \Eakhiri \Latau \Uurutan.
Ludovic Kuty

77

Sebelum mencari dengan regex like [A-Z], Anda harus menekan tombol case sensitive (atau Alt+ C) (karena leemour disarankan untuk diedit dalam jawaban yang diterima). Untuk lebih jelasnya, saya meninggalkan beberapa contoh lain:

  1. bermodalkan kata
    • Temukan: (\s)([a-z])( \sjuga cocok dengan baris baru, yaitu "venuS" => "VenuS")
    • Menggantikan: $1\u$2
  2. Uncapitalize words
    • Temukan: (\s)([A-Z])
    • Menggantikan: $1\l$2
  3. Hapus case unta (mis. CAmelCAse => camelcAse => camelcase)
    • Temukan: ([a-z])([A-Z])
    • Menggantikan: $1\l$2
  4. Huruf kecil dalam kata-kata (mis. Huruf Kecil => Huruf Kecil)
    • Temukan: (\w)([A-Z]+)
    • Menggantikan: $1\L$2
    • Ganti Alternatif: \L$0
  5. Huruf besar dalam kata-kata (mis. UpperCASe => uPPERCASE)
    • Temukan: (\w)([A-Z]+)
    • Menggantikan: $1\U$2
  6. Huruf besar sebelumnya (mis. Huruf besar => UPPERKase)
    • Temukan: (\w+)([A-Z])
    • Menggantikan: \U$1$2
  7. Huruf kecil sebelumnya (mis. LOWERCase => huruf kecil)
    • Temukan: (\w+)([A-Z])
    • Menggantikan: \L$1$2
  8. Huruf besar sisanya (mis. Huruf besar => huruf besar)
    • Temukan: ([A-Z])(\w+)
    • Menggantikan: $1\U$2
  9. Kecilkan sisanya (mis. LOWERCASE => lOwercase)
    • Temukan: ([A-Z])(\w+)
    • Menggantikan: $1\L$2
  10. Shift-kanan-huruf besar (mis. Case => cAse => caSe => casE)
    • Temukan: ([a-z\s])([A-Z])(\w)
    • Menggantikan: $1\l$2\u$3
  11. Shift-kiri-huruf besar (mis. CasE => CaSe => CAse => Kasing)
    • Temukan: (\w)([A-Z])([a-z\s])
    • Menggantikan: \u$1\l$2$3

Mengenai pertanyaan (mencocokkan kata-kata dengan setidaknya satu huruf besar dan satu huruf kecil dan membuatnya menjadi huruf kecil), jawaban-komentar leemour adalah jawaban yang tepat . Hanya untuk memperjelas, jika hanya ada satu kelompok untuk diganti, Anda bisa menggunakan ?:dalam kelompok dalam (yaitu kelompok yang tidak ditangkap ) atau menghindari membuat mereka sama sekali:

  • Temukan: ((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))ATAU([a-z][A-Z]+|[A-Z]+[a-z])
  • Menggantikan: \L$1

2016-06-23 Edit

Tyler menyarankan dengan mengedit jawaban ini ekspresi penemuan alternatif untuk # 4:

  • (\B)([A-Z]+)

Menurut dokumentasi , \Bakan mencari karakter yang tidak di batas kata (yaitu tidak di awal dan bukan di akhir). Anda dapat menggunakan tombol Ganti Semua dan melakukan hal yang sama persis seperti jika Anda memiliki (\w)([A-Z]+)ekspresi find.

Namun, downside dari \Badalah bahwa hal itu tidak memungkinkan penggantian tunggal, mungkin karena find 's 'tidak batas' pembatasan (silakan mengedit ini jika Anda tahu alasan yang tepat).


2

Ekspresi reguler

Temukan :\w+

Ganti :\L$0

Teks Sublime menggunakan mesin Perl Kompatibel Regular Expressions (PCRE) dari perpustakaan Boost untuk memberi daya ekspresi reguler di panel pencarian.

\L Mengubah semuanya menjadi huruf kecil

$0 Kelompok pengambilan


Tolong jadikan ini jawaban yang lengkap, bukan hanya jawaban kode tanpa penjelasan.
petezurich

1

Dalam BBEdit berfungsi seperti ini (mis .: mengubah nilai ID menjadi huruf kecil):

Cari nilai apa pun: <a id="(?P<x>.*?)"></a> Ganti dengan yang sama dalam huruf kecil:<a id="\L\P<x>\E"></a>

Apakah: <a id="VALUE"></a> Menjadi:<a id="value"></a>


0

Coba ini

  • Temukan: ([A-Z])([A-Z]+)\b
  • Menggantikan: $1\L$2

Pastikan sensitivitas huruf aktif (Alt + C)


Itu tidak berhasil. Ini cocok dengan 2+ huruf besar. Tapi saya mengerti itu \Luntuk huruf kecil. Saya memperbarui pertanyaan.
leemour
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.