検索

キーワード


【Eclipse入門 文字検索】正規表現を使った文字指定と除外指定の検索方法

  • 公開日:2021-02-25 17:18:15
  • 最終更新日:2021-02-26 09:45:28
【Eclipse入門 文字検索】正規表現を使った文字指定と除外指定の検索方法

Eclipse のショートカットキーとしても用意されている文字検索機能は、

使い方を覚えるとより実践的で便利な機能となります。

この記事では正規表現を使って、検索したい文字や除外したい文字の指定方法を学び

検索できる文字の幅や質を上げることを目的としています。


Eclipse入門 文字検索・正規表現を使った検索方法

Eclipse で文字の検索が出来る機能( ctrl + F や ctrl + H )は、

正規表現を使うことで余計な文字を除外してより精度の高い文字検索を行うことが出来ます。

また文字検索機能では置換を行うこともできるので、同様に精度の高い置換も可能となります。

ここでは文字検索と正規表現を組み合わせて、

より実用的な文字検索を行う方法について解説させていただきます。


◆正規表現って何?どうやって使うんだっけ?という方はこちら。

 正規表現の使い方

◆文字検索機能の使い方がわからないという方はこちら。

 【Eclipse ショートカットキー】検索機能の使い方



検索したい文字を指定する方法

Eclipse の文字検索機能は単純な文字検索以外にも、

文字の大小区別や正規表現の検索などの機能が備わっています。

これらを活用するとより細かな文字検索が出来るようになります。


大/小文字の区別機能

「大/小文字の区別」はチェックボックスにチェックを入れるだけで

大文字小文字の区別を行ってくれます。

●「Java」と「java」を区別する

文字検索で大文字小文字を区別


正規表現機能

「正規表現」のチェックボックスへチェックを入れると、

さらに細かい文字の検索が出来るようになります。

以下のようなリソースから4桁の数字の後に4桁の英字が続く文字列を検索してみましょう。

package test;

public class ShortCutTest {

	public static void main(String[] args) {
		//4桁の英字+数字
		System.out.println("abcd1234");
		//3桁の数字+英字
		System.out.println("123abc");
		//4桁の英字
		System.out.println("abcd");
		//4桁の数字
		System.out.println("1234");
		//4桁の数字+英字
		System.out.println("1234abcd");	
		System.out.println("9876java");
	}
}

4桁の数字と英字の条件に該当する文字列は最後の2つ「1234abcd」と「9876java」です。

この2つだけを検索したい場合は正規表現で「[1-9]{4}[a-z]{4}」と検索すれば意図した結果が得られます。

●正規表現で検索

正規表現で文字検索

ちなみに先述した「大/小文字の区別」を組み合わせればより絞った検索を行うことも出来ます。


検索で除外したい文字を指定する方法(文字の順序固定)

正規表現の検索では任意の文字を検索から除外することも可能です。

例えば、Java 関連の単語を検索したいけど JavaScript は除外したい。

でも「Java」で検索すると検索結果に JavaScript が含まれてしまう!といった場合に文字の除外を指定します。

このようなケースでは、「検索したい文字(?!除外したい文字)」とすることで対象を除外することができます。

今回の例に当てはめると「Java(?!script)」となります。※大文字小文字の区別なし

文字検索で除外対象指定

ただしこの検索方法は「Java」の後に「script」がある対象を除外を行います。

そのため仮に「ScriptJava」のようなものがあったとしたら除外は行いません。


検索で除外したい文字を指定する方法(除外対象のみ指定)

任意の除外したい文字だけを指定して検索を行います。

除外したい文字のみ指定を行うため、除外文字以外は検索結果の対象になります。

 ※ちなみにこの検索方法はキーボードカーソル位置より下の検索を行います。

  また別クラスが続いていても、クラスを跨いでの検索は行いません。


除外を行うには、「^(?!.*除外したい文字).*$」と指定します。

すると該当した行は検索の除外となります。

例えば、「apple」「banana」「melon」「grape」から「a」が付く行を除外する場合は

「^(?!.*a).*$」と指定します。

文字除外方法

「a」が付く行を除外するので、改行やスペース「 } 」などの括弧も検索結果の対象となります。


検索で除外したい文字を指定する方法(検索文字指定かつ除外文字指定)

先述の「^(?!.* ~ ).*$」に検索したい文字を指定することで、

任意の文字検索に加えて除外したい文字の指定も同時に行うことが出来ます。


この場合の正規表現は「^(?=.* 検索したい文字 )(?!.* 除外したい文字 ).*$」となります。

「SuperMarket」「SuperMan」「ThisSuper」「SuperArena」が書かれたリソースから

「Super」を検索してかつ「Arena」を除外したいとすると、

「^(?=.*Super)(?!.*Arena).*$」と書きます。

文字検索で文字指定かつ除外文字指定

記述方法が少し複雑ですが、

「Superを含む(?=.*Super)」「Arenaを含まない(?!.*Arena)」とすることで

文字位置を問わずどこかに Super が含まれていて、Arena が含まれていない文字列を検索することが出来ます。


指定文字の置換方法

文字の置換では、検索した文字の中から置換する部分と置換しない部分を指定することが出来ます。

まずは文字の検索を行います。このとき置換する部分はそのままで、置換しない部分は「()」で括ります。

次に「次で置換」欄に置換する文字を入力していき、先ほどの「()」で括った部分は「$1」のように記述します。

このとき「()」が2つ以上ある場合は左から順に「$1」「$2」「$3」...というように表します。

◆指定文字の置換例

文字置換の方法

④を押すと指定した通りに該当文字の置換を行います。

◆文字置換実行結果

文字置換実行結果

置換の指定さえ行えば「検索」→「置換」→「検索」→「置換」と選択するだけで

スムーズに文字の置き換えが行われるので、

大量に変更を行う修正において、一つずつ確認をしながら修正する場合などに便利な機能です。


また、置換の隣にある「すべて置換」を選択すると一括で該当文字の置換を行うこともできます。

ただし意図しない部分まで置換されるもしくは、意図した部分が検索対象から漏れていて置換されない

といったことが起こる可能性もあるため、すべて置換の機能を利用する際は注意が必要です。


文字の検索や置換が必要になった際は正規表現をうまく組み合わせると便利です。

まずは今回紹介したような、基本的な文字の検索・置換の方法から覚えましょう。


他にも Eclipse の便利な機能を知りたいという方はこちら。

 Eclipse 便利なショートカットキー一覧


【著者】

若江

30代で異業種となるIT業界へ転職した駆け出しのプログラマです。これまで主に Java や Ruby、HTML/CSS を使って学習を目的としたショップサイトや掲示板サイトの作成を行いました。プログラマとしての経験が浅いからこそ、未経験者の目線に近い形で基礎の紹介をしていきたいと思います。