Regex, büyük harfleri küçük harflerle değiştirir


221

Regex kullanarak karşılık gelen küçük harflerle büyük harfleri değiştirmeye çalışıyorum. Böylece

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

olur

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

Yüce Metin. Harfleri yalnızca hem küçük hem de büyük harf içeren sözcüklerde nasıl küçük harflerle yazabilirim? Böylece etkiler venUsve etkilemez VENUS.

Yanıtlar:


394

Yapabilirsin:

Bul: (\w) Şununla Değiştir:\L$1

Veya metni ctrl+ K+ seçin L.


7
Süper. çok kullanışlı. '\ L' gibi dönüşümleri listeleyen bazı kaynaklara işaret edebilir misiniz?
Codious-JR

17
Sublime, RegEx desteği için Boost kullanıyor, bunlar \ L: boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/…
Alex K.

4
Ve IntelliJ'de
Patrick

12
Not: Büyük harfe gitmek için ihtiyacınız olacak\U
takanuva15

2
Yalnızca tek bir parametreyi küçük harf yapmak için, küçük harfli bölümü sonlandırmak için \ E karakterini $1\L$2\E$3
Michael

129

Bunun başkaları için de kullanışlı olabileceğini düşündüm:

bulmak:

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

değiştirin:

  • \L$1$2-> tüm harfleri dönüştürecektir $1ve $2küçük harfe
    ANCAK
  • \l$1$2-> yalnızca ilk harfini $1küçük harfe dönüştürür ve diğer her şeyi olduğu gibi bırakır

Aynısı \Uve ile büyük harf için de geçerlidir\u


7
\l$1$2Yalnızca tam yapar $1, çünkü burada bu durumda küçük harflerle $isadece bir harf içeriyor. \l=> ilk harfi küçük harfe ve \u=> ilk harfi büyük harfe. Nerede \Uve \Ibunu takip eden tüm harflere yapıyor.
Raisch

5
\EA \Lveya \Udizisini sonlandıracağını unutmayın .
Ludovic Kuty

77

Gibi regex ile aramadan önce [A-Z], sen gerektiğini harf duyarlı düğmesine basın (veya Alt+ C(as) leemour güzel önerilen kabul yanıtında düzenlenecek). Açık olmak gerekirse, birkaç örnek daha bırakıyorum:

  1. Kelimeleri büyük harfe çevirme
    • Bul: (\s)([a-z])( \sayrıca yeni satırlarla eşleşir, yani "venuS" => "VenuS")
    • Değiştir: $1\u$2
  2. Kelimeleri büyük harfe çevirme
    • bul: (\s)([A-Z])
    • Değiştir: $1\l$2
  3. Deve kasasını çıkarın (örn. CAmelCAse => camelcAse => camelcase)
    • bul: ([a-z])([A-Z])
    • Değiştir: $1\l$2
  4. Sözcükler içindeki küçük harfler (örn. LowerCASe => Küçük harf)
    • bul: (\w)([A-Z]+)
    • Değiştir: $1\L$2
    • Alternatif Değiştir: \L$0
  5. Sözcükler içindeki büyük harfler (örneğin upperCASe => uPPERCASE)
    • bul: (\w)([A-Z]+)
    • Değiştir: $1\U$2
  6. Önceki büyük harf (ör. UpperCase => UPPERCase)
    • bul: (\w+)([A-Z])
    • Değiştir: \U$1$2
  7. Küçük harf önceki (örneğin, LOWERCase => küçük kasa)
    • bul: (\w+)([A-Z])
    • Değiştir: \L$1$2
  8. Geri kalanını büyük harfle yazın (örneğin upperCase => upperCASE)
    • bul: ([A-Z])(\w+)
    • Değiştir: $1\U$2
  9. Gerisini küçük harflerle yazın (örneğin, LOWERCASE => l
    • bul: ([A-Z])(\w+)
    • Değiştir: $1\L$2
  10. Shift-sağ-büyük harf (örn. Case => cAse => caSe => casE)
    • bul: ([a-z\s])([A-Z])(\w)
    • Değiştir: $1\l$2\u$3
  11. Shift-sol-büyük harf (örn. CasE => CaSe => CAse => Kasa)
    • bul: (\w)([A-Z])([a-z\s])
    • Değiştir: \u$1\l$2$3

Sorusunu İlişkin (maç en az bir büyük harf ve bir küçük harfle kelimeleri ve onları küçük harfli yapmak), leemour en comment-cevap olduğunu doğru cevap . Sadece açıklığa kavuşturmak için, değiştirilecek tek bir grup varsa, sadece ?:iç gruplarda (yani yakalama olmayan gruplar ) kullanabilir veya bunları oluşturmaktan kaçınabilirsiniz:

  • bul: ((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z])) VEYA([a-z][A-Z]+|[A-Z]+[a-z])
  • Değiştir: \L$1

2016-06-23 Düzenle

Tyler bu cevabı # 4 için alternatif bir bulma ifadesi düzenleyerek önerdi:

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

Göre belgeler , \B(başlangıçta ve sonunda değil yani değil) kelimenin sınırda olmayan bir karakter için bakacağız. Tümünü Değiştir düğmesini kullanabilirsiniz ve bu (\w)([A-Z]+), find ifadesinde yaptığınızla aynı şeyi yapar .

Bununla birlikte, bunun dezavantajı \B, belki de bulmanın "sınırsız" kısıtlaması nedeniyle tek bir değiştirmeye izin vermemesidir (lütfen kesin nedeni biliyorsanız bunu düzenleyin).


2

Düzenli ifade

Bul :\w+

Değiştir :\L$0

Sublime Text, arama panellerinde düzenli ifadeleri çalıştırmak için Boost kütüphanesinden Perl Uyumlu Normal İfadeler (PCRE) motorunu kullanır.

\L Her şeyi küçük harfe dönüştürür

$0 Grupları yakala


Lütfen bunu sadece açıklama olmadan kod yanıtından değil, tam bir cevap yapın.
petezurich

1

BBEdit'te bu çalışır (örneğin: kimlik değerlerini küçük harfe değiştirmek):

Herhangi bir değeri arayın: <a id="(?P<x>.*?)"></a> Küçük harfle değiştirin:<a id="\L\P<x>\E"></a>

Oldu: <a id="VALUE"></a> Oldu:<a id="value"></a>


0

Bunu dene

  • bul: ([A-Z])([A-Z]+)\b
  • Değiştir: $1\L$2

Büyük / küçük harf duyarlılığının açık olduğundan emin olun (Alt + C)


Bu işe yaramıyor. 2+ büyük harfle eşleşir. Ama bunun \Lküçük harf olduğunu anlıyorum . Soruyu güncelledim.
leemour
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.