構造検索と置換
従来の検索プロセスでは、ソースコードの構文とセマンティクスが考慮されていません。 正規表現を使用している場合でも、IntelliJ IDEA はコードを正規表現として扱います。 構造検索および置換 (SSR )アクションを使用すると、コード構造を考慮して、コード内の特定のコードパターンまたは文法構造を検索できます。
IntelliJ IDEA は、作成した 検索テンプレートと適用した 条件に基づいて、ソースコードのフラグメントを見つけて置き換えます。
ターゲットを構造的に検索
メインメニューで に移動して、 構造検索 ダイアログを開きます。
構造置換 ダイアログへ素早く切り替えるには、
をクリックします。
構造検索 ダイアログで、次のいずれかの操作を行います。
テンプレートを一から作成する場合は、テンプレートのリストから 下書きテンプレート を選択し、エディター領域にコードテンプレート(例えば、
$variable$でコードを表現)を入力します。カスタムテンプレートを将来使用するために保存する場合は、ダイアログのツールバーにある テンプレートの保存 アイコン(
)をクリックします。テンプレートをインスペクションとして保存することも可能です。 テンプレートをインスペクションとして保存することもできます。

IntelliJ IDEA は、作成したテンプレートをテンプレートリストの 最近 ノードに追加します。
既存のテンプレートをプロトタイプとして使用します: 利用可能な既存のテンプレートのリストから必要なテンプレートを選択します。
例: コードに次のフィールドがあります。
public class MainActivity { public static final String this_is_wrong = "Hello"; public static final String THIS_IS_CORRECT = "world"; }クラスで特定のフィールドを見つけましょう。
既存のテンプレートのリストで、 Java をクリックし、 クラスベース ノードを開きます(クラスにフィールドが必要なため)。これにより、 クラステンプレートのフィールドがターゲットになります。

検索 をクリックすると、これらの構造をプロジェクト全体から検索できます。
IntelliJ IDEA はエディターで見つかったコードの出現箇所を即座にハイライトします。
構造検索 ダイアログは、選択したテンプレートと、そのテンプレートで使用されているフィルターの値を表示します。 既存のフィルターを編集するか、正規表現や スクリプト制約などの新しい 条件を追加できます。 コードの変数上にキャレットを置き、フィルター領域でそのフィルターを管理します。

例として、
$Field$変数のために テキスト 修飾子を追加しましょう。テキスト 修飾子については、次の正規表現を入力してください。
\b[A-Z].*?\b
この場合、 構造検索 ダイアログで 大/小文字の区別 チェックボックスを選択すると、IntelliJ IDEA は最初のフィールドで大文字のフィールドのみを検索します。
また、選択した言語に応じて、追加のオプションが利用できます。
例: 次のオプションを確認してください。
言語: リストから検索に含めるファイル型を選択します。 この場合は、 Java です。
ターゲット: リストから検索対象にするアイテムを選択します。 この場合は、
Fieldです。
再帰: このチェックボックスが選択されている場合、IntelliJ IDEA は再帰検索を実行し、ネストされたすべてのアイテムが結果に含まれます。 例: 再帰 オプションを有効にしてメソッド呼び出しを検索すると、IntelliJ IDEA は
foo(foo(foo()))でネストされたメソッド呼び出しを検索します。 再帰 オプションを無効にすると、外部メソッド呼び出しのみが検出されます。挿入されたコード: このチェックボックスを選択すると、HTML 内の JavaScript や Java 内の SQL など、注入されたコードも検索対象になります。
大/小文字の区別: このチェックボックスを選択すると、検索結果は検索対象の大文字小文字と一致します。
検索スコープを指定します: プロジェクト、モジュール、ディレクトリ、またはカスタム スコープ。
検索 をクリックします。
IntelliJ IDEA は 検索 ツールウィンドウに結果を表示します。

新しい検索テンプレートは、カスタムテンプレートとして 構造検索インスペクションに追加できます。 そのためには、 検索 ツールウィンドウで テンプレートからインスペクションを作成 をクリックします。 その後、コードの検査に再利用できます。
ターゲットを構造的に置換
メインメニューで へ移動します。
構造置換 ダイアログで、新規または 既存のテンプレートを検索に追加し、テンプレート領域を置き換えます。 置換テンプレートは、 検索テンプレートと同じ方法で保存できます。
置換テンプレート内の変数にフィルターを追加する必要がある場合は、対象の変数にキャレットを置き、フィルター領域を使用してフィルターを管理します。
フィルター領域では、あなたのように選択した内容に応じて、 フィルター条件を指定してください。
例: 検索した変数
$Field$を取得し、見つかったテンプレートを小文字に置き換える条件を追加しましょう。変数
$Field2$を呼び出して、基本的に Groovy スクリプトである次のフィルター スクリプトを追加してみましょう:Field.name.toLowerCase()。
置換結果を絞り込むには、次のオプションを選択します。
完全修飾名を短縮する - 完全修飾クラス名を短縮名およびインポートに置き換えます。
再フォーマット - 置き換えられたコードを自動的にフォーマットします。
静的インポートを使用する - 可能であれば、静的インポートを代わりに使用します。 例: このオプションが選択されている場合、静的メソッド
Math.abs(i)へのメソッド呼び出しはabs(i)になります。
必要なオプションを指定したら、 検索 をクリックします。 IntelliJ IDEA は結果を 検索 ツールウィンドウに表示します。
検索 ツールウィンドウでは、結果をさらに操作して、見つかったアイテムを 1 つずつ、または一度にすべて置き換えたり、潜在的な変更をプレビューしたりできます。
置換テンプレートを 構造検索インスペクションに追加して、コードのクイックフィックスとして使用することもできます。

置換の結果、大文字が小文字に切り替わりました。

検索テンプレートを共有
エクスポートまたはインポートすることで、検索テンプレートを同僚と共有できます。
構造検索 ダイアログ( )で、 新しい検索テンプレートを作成するか、既存のテンプレートを使用します。
テンプレートをエクスポートするには、
をクリックします。 IntelliJ IDEA は、テンプレートの XML 表現をクリップボードに追加します(クリップボードの内容を表示するには、 Ctrl+Shift+V を押します)。 この表現は、チャット、メール、フォーラムで他の開発者と共有できます。
テンプレートをインポートするには、共有 XML コードを任意の場所(メール、チャット、フォーラム)からコピー(Ctrl+C )し、 構造検索 ダイアログで
をクリックします。 IntelliJ IDEA は、XML コード表現を取得し、変数とスコープが存在する場合はそれを含むテンプレートに変換します。