10

「hello_world」などの文字列を「HelloWorld」に変換したり、元に戻したりするために、正規表現だけを使用することは可能ですか?

「ClassName」を別の場所に入力すると、「class_name」が自動的に入力される Sublime Text のスニペットを作成する必要があることが多いため、質問しています。この目的には、perl スタイルの正規表現しか使用できません。

4

1 に答える 1

17

perl 正規表現の使用:

hello_world -> HelloWorld

s/(_|\b)([a-z])/\u\2/g;
  • \b: 境界で一致 (スペース、文字列の開始、句読点など)
  • [a-z]: 小文字のアルファベット
  • \u: 次の文字を大文字にする
  • \2: グループ 2 (最初の小文字)
  • (_|\b)-> グループ 1
  • ([a-z])-> グループ 2

HelloWorld -> hello_world

s/([A-Z][a-z]+|[a-z]+)([A-Z])/\l\1_\l\2/g;
  • には機能しませんHello
  • 2 つの置換を使用できる場合は、s/([A-Z])/_\l\1/g;続けて使用します。s/^_//;
于 2013-06-26T11:10:45.667 に答える