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


PyCharm は、作成したテンプレートをテンプレートリストの 最近 ノードに追加します。
既存のテンプレートをプロトタイプとして使用するには、利用可能なテンプレート一覧から必要なテンプレートを選択します。
HTML ファイルに追加されている次のスタイル定義を検討してください。
<style> #element1 { display: inline-block; width: 25%; margin-top:90px; } #element2 { display: inline-block; width: 40%; margin-top:10px; } </style>HTML ファイルの <div> タグに含まれるスタイル要素へのすべての参照を見つけてみましょう。
既存のテンプレートのリストから、 の html 属性値 を選択します。

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

この例では、以下の条件を設定します。
$tag$ 用 -
text=div$attribute$ 用 -
text=id$value$ 用 -
text=element[1-9]

検索範囲(プロジェクト、モジュール、ディレクトリ、カスタムスコープ)を指定します。
検索 をクリックしてください。
PyCharm は、 検索 ツールウィンドウに結果を表示します。

ターゲットを構造的に置き換える
メインメニューで へ移動します。
構造置換 ダイアログで、新規または 既存のテンプレートを検索に追加し、テンプレート領域を置き換えます。 置換テンプレートは、 検索テンプレートと同じ方法で保存できます。
置換テンプレート内の変数にフィルターを追加する必要がある場合は、対象の変数にキャレットを置き、フィルターエリアでフィルターを管理してください。

フィルター領域では、あなたのように選択した内容に応じて、 フィルター条件を指定してください。
置換結果を絞り込むには、次のオプションを選択します:
完全修飾名を短縮する - 完全修飾クラス名を短縮名およびインポートに置き換えます。
再フォーマット - 置き換えられたコードを自動的にフォーマットします。
静的インポートを使用する - 可能であれば、静的インポートを代わりに使用します。
必要なオプションを指定したら、 検索 をクリックします。 PyCharm は 検索 ツールウィンドウに結果を表示します。
検索 ツールウィンドウでは、結果をさらに操作して、見つかったアイテムを 1 つずつ、または一度にすべて置き換えたり、潜在的な変更をプレビューしたりできます。
p タグの class 属性の大文字の値を小文字に変換する次の例を検討してください。 検索テンプレート フィールドでは、 class 属性に大文字の値([A-Z].* および 大/小文字を区別する )を持つすべての p タグを検索するテンプレートを作成します。 これらの検索のみを class 値(検索対象 = b )に絞り込みます。 テンプレートを置換 フィールドで、新しい変数 $d$ を作成し、それに Groovy スクリプトを割り当てます(b.getText().toLowerCase())。 検索後、 すべて置換 を選択して置換を実行します。
検索テンプレートを共有する
エクスポートまたはインポートすることで、検索テンプレートを同僚と共有できます。
構造検索 ダイアログ( )で、 新しい検索テンプレートを作成するか、既存のテンプレートを使用します。
テンプレートをエクスポートするには、
をクリックします。 PyCharm は、テンプレートの XML 表現をクリップボードに追加します(クリップボードの内容を表示するには、 Ctrl+Shift+V を押します)。 この表現は、チャット、メール、フォーラムで他の開発者と共有できます。
テンプレートをインポートするには、共有 XML コードを任意の場所(メール、チャット、フォーラム)からコピー(Ctrl+C )し、 構造検索 ダイアログで
をクリックします。 PyCharm は、XML コード表現を取得し、変数やスコープが存在する場合はそれらを含めてテンプレートに変換します。