正規表現は大文字を小文字に置き換えます


220

正規表現を使用して、大文字を対応する小文字に置き換えようとしています。そのため

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

なる

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

崇高なテキストで。小文字と大文字の両方を含む単語でのみ小文字を小文字にするにはどうすればよいですか?それが影響を与えるのvenUsではなくVENUS

回答:


393

してもいいです:

検索:(\w) 置換:\L$1

または、テキストctrl+ K+を選択しますL


7
素晴らしい。非常に便利。'\ L'のような変換をリストするリソースを指摘していただけませんか?
Codious-JR

17
サブライムは、その正規表現のサポートのためにブーストを使用して、これらはL \のような形式の文字列のためのドキュメントです:boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/...
アレックス・K.

4
IntelliJ
Patrick、

11
注:大文字にするには、次のものが必要です\U
takanuva15

2
:単一のパラメータだけを小文字に、小文字のセクション終了することの後に\ Eを置く $1\L$2\E$3
マイケル・

129

これは他の人にも役立つかもしれないと思った:

見つける:

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

交換:

  • \L$1$2- >内のすべての文字を変換する$1$2小文字に
    BUT
  • \l$1$2->の最初の文字のみ$1を小文字に変換し、その他はすべてそのままにします

同じことがで大文字のために行く\Uと、\u


7
\l$1$2$1この場合、$i1文字しか含まれていないため、ここでは全体を小文字にするだけです。\l=>最初に続く文字を小文字に、\u=>最初に続く文字を大文字に。どこで\U\I次のすべての文字にそれを行う。
Raisch

5
\E\Lor \Uシーケンスを終了することに注意してください。
Ludovic Kuty

77

のよう[A-Z]に正規表現で検索する前に、大文字と小文字を区別するボタン(またはAlt+ C)を押す必要があります(承認済みの回答で編集することをお勧めします)。明確にするために、他の例をいくつか残しておきます。

  1. 単語を大文字にする
    • 検索:(\s)([a-z])\sまた、新しい行に一致する、すなわち"VENUS" => "VENUS")
    • 交換: $1\u$2
  2. 単語を大文字にしない
    • 検索: (\s)([A-Z])
    • 交換: $1\l$2
  3. キャメルケースを削除(例:cAmelCAse => camelcAse => キャメルケース
    • 検索: ([a-z])([A-Z])
    • 交換: $1\l$2
  4. 単語内の小文字(例:LowerCASe =>小文字)
    • 検索: (\w)([A-Z]+)
    • 交換: $1\L$2
    • 代替置換: \L$0
  5. 単語内の大文字(例:upperCASe => uPPERCASE)
    • 検索: (\w)([A-Z]+)
    • 交換: $1\U$2
  6. 前の大文字(たとえば、upperCase => UPPERCase)
    • 検索: (\w+)([A-Z])
    • 交換: \U$1$2
  7. 前の小文字(例:LOWERCase => lowerCase)
    • 検索: (\w+)([A-Z])
    • 交換: \L$1$2
  8. 残りを大文字にします(例:upperCase => upperCASE)
    • 検索: ([A-Z])(\w+)
    • 交換: $1\U$2
  9. 残りを小文字にします(例:lOWERCASE => lOwercase)
    • 検索: ([A-Z])(\w+)
    • 交換: $1\L$2
  10. 右シフト大文字(例:Case => cAse => caSe => casE)
    • 検索: ([a-z\s])([A-Z])(\w)
    • 交換: $1\l$2\u$3
  11. Shift-left-uppercase(例:CasE => CaSe => CAse => Case)
    • 検索: (\w)([A-Z])([a-z\s])
    • 交換: \u$1\l$2$3

質問(少なくとも1つの大文字と1つの小文字で単語を一致させ、それらを小文字にする)に関しては、リーモアのコメントと答え正しい答えです。明確にするために、置き換えるグループが1つしかない場合?:は、内部グループ(つまり、非キャプチャグループ)で使用するか、まったく作成しないようにします。

  • 検索:((?:[a-z][A-Z]+)|(?:[A-Z]+[a-z]))または([a-z][A-Z]+|[A-Z]+[a-z])
  • 交換: \L$1

2016-06-23編集

タイラーは、この回答を編集して、#4の代替検索式を提案しました。

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

ドキュメントによれば\B、は単語の境界にない(つまり、最初と最後ではない)文字を探します。[ すべて置換 ]ボタンを使用する(\w)([A-Z]+)と、検索式と同じように動作します。

ただし、の欠点は\B、おそらくfindの「境界ではない」制限のため、単一の置換ができないことです(正確な理由がわかっている場合は編集してください)。


2

正規表現

検索\w+

交換\L$0

Sublime Textは、BoostライブラリのPerl互換正規表現(PCRE)エンジンを使用して、検索パネルの正規表現を強化します。

\L すべてを小文字に変換します

$0 キャプチャグループ


説明のないコード解答ではなく、これを完全な解答にしてください。
petezurich

1

BBEditではこれが機能します(例:ID値を小文字に変更):

任意の値を検索:<a id="(?P<x>.*?)"></a> 小文字で同じものに置き換えます。<a id="\L\P<x>\E"></a>

だった:に<a id="VALUE"></a> なった:<a id="value"></a>


0

これを試して

  • 検索: ([A-Z])([A-Z]+)\b
  • 交換: $1\L$2

大文字と小文字の区別がオンになっていることを確認してください(Alt + C)


それはうまくいきません。2つ以上の大文字に一致します。しかし、私はそれ\Lが小文字のためであることを理解しています。質問を更新しました。
リーモア2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.