正規表現でキャメルケースとスネークケースを変換する方法

正規表現

目次

前回の記事で、アルファベットの大文字と小文字を相互に変換する方法についてお伝えしました。

正規表現でアルファベットの大文字⇔小文字変換を行う方法

今回はこれを応用してキャメルケース⇔スネークケースの変換を行います。

キャメルケース

JavaやJavaScriptの変数名に用いられる記述方法です。

複数の英単語を組み合わせて変数に名前を付けるとき、2つ目以降の単語の先頭を大文字にして記述します。

私の投稿のOpenLayersの解説シリーズでもこの記述方法に従った変数名が登場します。

  • feature + id → featureId
  • image + layer → imageLayer
  • add + image + listener → addEventListener

大文字の部分がラクダ(camel)のコブのように見えるため、キャメルケースと呼ばれます。

スネークケース

データベースの列名などに用いられる記述方法です。

複数の英単語を組み合わせて列に名前を付けるとき、単語を「_」アンダーバーでつないで記述します。

例)

  • feature + id → feature_id
  • image + layer → image_layer
  • add + image + listener → add_event_listener

つなぎ目の「_」がヘビ(snake)のように見えるため、スネークケースと呼ばれます。

キャメルケースからスネークケースに変換する方法

キャメルケースからスネークケースに変換を行う道筋は以下になります。

①大文字の前に「_」を挿入する
②大文字を小文字に変換する

これを行うための正規表現は以下になります。

置換前

([A-Z])

置換後

_\L$1

スネークケースからキャメルケースに変換する方法

スネークケースからキャメルケースに変換する場合の道筋は、先ほどの逆になります。

①「_」を検出する
②「_」の次の文字を大文字に変換する
③「_」を削除する

これを行うための正規表現は以下になります。

置換前

_(.)

置換後

\U$1

まとめ

今回は前回お伝えした知識を実用的に使用してみました。

Java-Springなどで、O/Rマッピングのプログラミングを行っていると役に立ちます。
エンティティクラスのフィールド名は、データベースの列名をキャメルケースに変換した名前にしなければならない等の制約があります。

今回の方法を用いることで、簡単にスネークケースの列名をキャメルケースの変数名に変換することが可能です。

正規表現についての別記事についてもご覧ください!

★検索
パスワードの正規表現の考え方
「~を含まない行」を検索する方法
「~を含む行」を検索する方法
「~で終わる」を検索する方法
「~で始まる」を検索する方法
正規表現繰り返しの考え方

最短一致検索を行う方法
否定の文字クラス
「または」検索を行う方法

環境による「\d」の動作の違いについて検証

★置換
正規表現置換の考え方
大文字⇔小文字変換を行う方法
キャメルケース⇔スネークケース変換を行う方法
CSVを囲みなし⇒囲みありに変換する方法

CSVファイルの特定のカンマ以降を削除する方法
CSVファイルの必要な箇所だけ残す方法
数字3ケタおきにカンマを挿入する方法
正規表現置換で不要な行を削除し、必要な行だけ残す方法
数字を0埋めする方法
0埋めされた数字を0埋めなしに変換する方法
ファイル名から、拡張子のみを抽出する方法
Javaで正規表現置換を行う方法

また、Udemyという動画教育プラットフォームで動画解説を行っております。
動きを確認しながら丁寧に学習したいという方は、ぜひご覧ください!

正規表現入門 作業効率アップに役立つ38個の方法

コメント

  1. ケン より:

    スネークケースからキャメルケースに変換する方法の置換前は、
    (_|^)(.)
    ではないですか?(アンダーバー抽出しないといけないので)

    • すん より:

      コメントありがとうございます。

      ご指摘の正規表現は、スネークケースからパスカルケースに置換するときに用いる方法ですね。
      ⇒パスカルケースはキャメルケースの先頭も大文字にしたもの。Javaのクラス名やC#のメソッド名で使用します。

      確かにスネークケースからパスカルケースに変換するときは以下のように記述します。
      置換前

      (_|^)(.)

      置換後

      \U$2

      スネークケースからキャメルケースに変換する方法は画像にある通りです。

タイトルとURLをコピーしました