記事のターゲット
- Eclipseで開発している方
- ソース中で一括変更したいものがある方
はじめに
Eclipseで開発しているとソースの修正をする場面が多々あると思いますが、今回はその作業を少し速くできる方法を紹介していきたいと思います。
ただの置換だけだったらすぐにできるのですが、文字列中の一部が微妙に違っているものを一括で変更する場合は正規表現を使用しないと難しいのでできるようになっていると役立つと思います。
置換ウィンドウの出し方
まず、置換するためのウィンドウの出し方を説明いたします。ほとんどの方は読み飛ばしてしまって問題ありません。
以下のようにEclipseを開いた状態でCtrl+Fを同時押しでウィンドウを開けます。
ご覧の通り、検索と置換ができるウィンドウが開きます。今後、正規表現を使用したい場合は正規表現(X)の部分にチェックを入れてください。
文字列の変換は、検索ボックスに変換したい文字列を入力し、次で置換ボックスに入力した文字列に置換するという流れで行われます。
検索・置換で正規表現を使用する際の注意点
Eclipseの検索・置換ボックスで正規表現を使用する際、以下の文字は特殊な意味を持つ文字(メタ文字)になりますので、もしただの文字として扱う場合エスケープ処理が必要となります。
エスケープ処理とは、正規表現でメタ文字の前に\(バックスラッシュ)を入れることでその直後のメタ文字をただの文字列として認識させることです。
以下一例です。
メタ文字 | 意味 |
---|---|
. | 任意の1文字 |
* | 直前のパターンの0回以上繰り返し |
+ | 直前のパターンの1回以上繰り返し |
? | 直前のパターンの0~1回繰り返し |
括弧() | グループ化させる際に使用 |
[何かしらの文字] | []内のいずれか1文字 |
[^何かしらの文字] | []内に含まれない1文字 |
^ | 文頭を指定 |
$ | 文末を指定 |
\d | 半角数字 |
System.out.println("~")の出力部分「~」のみ一括で変換
jUnitのテストクラスを作成するときなどにたまに利用するのですが、上の画像のように""(ダブルコーテーション)で囲んだ部分だけ一括で変更したい場合に以下の方法が使えます。
step
1検索ボックスに条件を入力する
検索ボックスに以下の文字列を入力します。
(System.out.println\(").*("\))
初めての方は正直意味が分からないと思うので分解して説明させていただきます。
まず、変換したい文字列はSystem.out.println("~")ですので、固定されている「System.out.println("」と「")」のように前半と後半に分割します。
前半部分の「System.out.println("」に含まれる「(」はただの文字列なので直前に\エスケープ文字を入れています。
そして、置換する際に簡単にするため括弧で囲みます。→(System.out.println(")
なぜ括弧で囲むのかは置換する際に説明します。
後半部分も同じようにエスケープし、括弧で囲みます。→("))
そして.*の部分ですべての文字を指定して検索しています。
step
2次で置換ボックスに変換後の文字列を入力する
次に以下の文字列を入力します。「aaa」の部分は変換したい文字を入力してください。
$1aaa$2
1つ目のステップで前半と後半に分けた後括弧で文字列を囲んだと思いますが、その囲んだ部分をEclipseの置換では$1、$2、$3のように簡単にした表記で置き換えることができます。
なのでここでは$1→「System.out.println("」、$2→「")」というように読み替えることができます。$の後の数字は左からの括弧の順番を入力します。
この状態ですべて置換を押してみると、
上のように出力したい文字列だけ変換することができました。
※ちなみに、括弧を使用した短縮を使用しない場合は以下のようにすることで変換ができます。
ただグループ化するための括弧が有るか無いかだけなので、お好みの方を使用してください。
終わりに
今回使用した方法は一例なので、正規表現を極めていくともっと複雑な検索と置換ができるようになるので試してみてください。
以下正規表現についての参考図書です。