正規表現でスネークケースをキャメルケースにする。ただし一部だけ。

MybatisでMapperからパラメーターをxmlにわたすときにSQL文を書かないといけなかったのだが、すでに不完全に作成されているものがあった。そのうちスネークケースをキャメルケースに変換したかったんだけど、結局完璧に変換することはできなくて中途半端に変換してあとは手作業でちまちまコピペしていくことになった。

UPDATE
  table1
SET
  user_name = #{user_name},
  user_age = #{user_age},
  user_input_data = #{user_input_data},
.
.
.

WHERE
  id = 1;

てきとうだけどざっくり↑こんな感じ。
スネーク → キャメル なんてネットで検索すればいくらでも出てくるだろうと、調べてヒットした下記のサイトのものを試してみた。
正規表現でキャメルケースとスネークケースを変換する方法
記載されている 置換前 _(.) → 置換後 \U$1
で変換できたー!  んだけど違う、、、、変換したいのは右側だけなんだ。
そこからあれこれ考えたけど仕事中だし考えている方が時間かかりそうだったのでちまちま作業に切り替えたという次第です。

例えば
{ から _ の手前までを$1として、_ の後ろを$2として
置換前 ({.*)_(.)  置換後 $1\U$2 のようにしたらいけるかな?と思ったけど残念。
アンダーバーが複数ある場所は拾えなかった。

  user_name = #{userName},
  user_age = #{userAge},
  user_input_data = #{user_inputData} アンダーバー_が複数あるパターンに対応できない

あれ、これでも連続で2回やればいけるんじゃないか?今気づいた、、。

  user_name = #{userName},
  user_age = #{userAge},
  user_input_data = #{userInputData}

いけた!

コメント

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