質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

PhpStorm

PhpStormは、JetBrains社が提供しているPHP向けのIDEです。同社の製品であるWebStormの機能を内包しており、優秀なコード補完やコード分析など多彩な機能を備えています。

Q&A

解決済

1回答

1962閲覧

スネークケースをキャメルに一括で変換したい

renren643

総合スコア279

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

PhpStorm

PhpStormは、JetBrains社が提供しているPHP向けのIDEです。同社の製品であるWebStormの機能を内包しており、優秀なコード補完やコード分析など多彩な機能を備えています。

0グッド

0クリップ

投稿2020/10/22 04:02

編集2020/10/22 04:35

以下のようなコードがあり、$building_idなどのスネークケースをキャメルに変換したいです。

public function hoge($building_id, $owner_member_id) { $query = Hoge::query(); $query = $query->where('building_id', $building_id); $query = $query->where('owner_member_id', $owner_member_id); return $query->first(); }

単純に、「(_|^)(.)」=>「\u$2」と置換したらなるのですが

where('owner_member_id',

のようにwhereで始まり、キャメルケースが続き、「',」で終了するようなところは除外したいです。

where('owner_member_id',

この行自体は「where.(_)(.).',」でマッチしたのですが

以下のように、「含まない」という条件を指定するうまくいきません。

(_)(.)(?!where.*(_)(.).*',)

解決策をご存知の方がいれば教えてください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/10/22 04:08

逆に、「$で始まり英数字・アンダーバーだけを含むもの」という条件に絞って置き換え…という方法は使えないのでしょうか? (ブラックリスト方式でやると、思わぬものがヒットする危険があります)
renren643

2020/10/22 04:16

あ、確かにそれでもいいですね
yambejp

2020/10/22 04:22

やろうとしているのはエディタでの置換ですか?
renren643

2020/10/22 04:23

その場合、置換元は「\$[0-9a-zA-Z]*(_)(.)」になると思いますが置換先はどうしたらいいでしょうか?
renren643

2020/10/22 04:23

はい、PHPSTORMでの置換です。
renren643

2020/10/22 04:28

(\$[0-9a-zA-Z]*)(_)(.) から $1\u$3 ですかね
yambejp

2020/10/22 04:29

「PHPSTORM」タグがあるようなので付けておくとよいかもしれません
renren643

2020/10/22 04:35

でもそれなら $hoge_floor_building_ids みたいなのにマッチしないですね
renren643

2020/10/22 04:36

タグつけておきました
guest

回答1

0

ベストアンサー

"$"から始める変数名をキャメルケースに変換するのであれば、以下の正規表現でできると思います。
但し、1回の置換で、すべて置き換えるのは、無理ですが、"_"の個数分繰り替えせば、置換できます。
置換前:

text

1($[a-z]+)_([a-z]+)

置換後:

text

1$1\u$2

例:

js

1 // 置換前 2 public function hoge($building_id, $owner_member_id) 3 4 // 1回目 5 public function hoge($buildingId, $ownerMember_id) 6 7 // 2回目 8 public function hoge($buildingId, $ownerMemberId) 9

投稿2020/11/07 07:32

akiruno-oneone

総合スコア815

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問