構造検索と置換の例
ご存知のように、通常の検索と構造検索の主な違いは、構造検索ではプログラミング言語の構造テンプレートを探していることです。
構造検索の利点は、既存のテンプレートに基づいてパターンを作成し、コードの検索と置換にかかる時間を節約できることです。
既存のテンプレートの広範なリストは、単純なパターンからより複雑なパターンまで、多くのユースケースをカバーしています。
パターン内の各アイテムは、両側の $ 記号によって制限される変数で構成されます。
HTML と XML の例
次の例は、HTML および XML コードで構造検索を使用する方法を示しています。
XML および HTML タグ、属性、それらの値の検索
タグを検索する最も簡単なテンプレートは <$tag$/>
です。
変数
$tag$
に制約を設定することにより、検索するタグを指定できます。例:li
を指定すると、すべてのli
タグが取得されます。XML および HTML で検索するための次のテンプレートを検討してください:
<$tag$ $attribute$=$value$ />
例:$attribute$
変数にテキストフィルターid
を指定し、$value$
変数にテキストフィルターとして\d+
正規表現を指定すると、id
属性に数値を持つすべてのタグを見つけることができます。
id 属性が 2 より大きい行をすべて削除する
HTML ファイルを作成し、次のコードを貼り付けます。
<!doctype html> <html> <head> <title>Structural Search Example</title> <body> <ul> <li id="1">Example line 1</li> <li id="2">Example line 2</li> <li id="3">Example line 3</li> <li id="a">Example line a</li> <li id="5">Example line 5</li> </ul> </body> </html>メインメニューで、
に移動します。言語リストから、HTML を選択します。
次の文字列を検索テンプレートフィールドに貼り付けます。
<$tag$ $attribute$="$value$">$tag$
変数をクリックします。フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに
li
と入力します。フィルターパネルが表示されていない場合は、
検索演算子パネルの切り替えをクリックします。
$attribute$
変数をクリックします。フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに
id
と入力します。$value$
変数をクリックします。フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに
\d+
と入力します。\d+
正規表現は、検索結果を数値に制限します。そのため、id="a"
のある行は除外されます。フィルターパネルからフォーカスを切り替えずに、追加ボタンをクリックし、スクリプトを選択して、次のコードを貼り付けます。
value.getText().replaceAll (/"/, '').toInteger() > 2スクリプトは
$value$
変数の内容を読み取り、それを文字列として返します(たとえば、"1"
)。次に、スクリプトはすべての引用符を置き換え、文字列値を整数に変換して、2
と比較します。
li タグのクラス属性の大文字の値を小文字に変換する
HTML ファイルを作成し、次のコードを貼り付けます。
<!doctype html> <html> <head> <title class="EXAMPLE">Structural Replace Example</title> <body> <ul> <li class="EXAMPLE">Example line 1</li> <li class="example">Example line 2</li> <li class="EXAMPLE">Example line 3</li> <li class="example">Example line a</li> <li id="EXAMPLE">Example line 5</li> </ul> </body> </html>メインメニューで、
に移動します。言語リストから、HTML を選択します。
次の文字列を検索テンプレートフィールドに貼り付けます。
<$tag$ $attribute$="$value$">大 / 小文字を区別するチェックボックスを選択します。
$tag$
変数をクリックします。フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに
li
と入力します。$attribute$
変数をクリックします。フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに
class
と入力します。$value$
変数をクリックします。フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに
[A-Z].*
と入力します。[A-Z].*
正規表現は、検索結果を大文字に制限します。ターゲットリストから値を選択します。この手順では、
class
属性のすべての大文字の値をハイライトします。置換テンプレートフィールドに、
$to_lower_case$
変数を貼り付けます。$to_lower_case$
変数をクリックします。フィルターパネルで、修飾子の追加をクリックし、スクリプトを選択して、次のコードを貼り付けます。
value.getText().toLowerCase()検索をクリックします。
検索ツールウィンドウで、見つかった結果をプレビューし、すべて置換をクリックします。
関連ページ:

検索テンプレート、修飾子、スクリプトの制約
構造検索用のテンプレートを作成するときは、基本的にスクリプトを作成します。スクリプト作成プロセスを簡素化するために、PyCharm は、検索テンプレートのプロトタイプとして使用できる事前定義された検索テンプレートのリストを提供します。既存の検索と置換テンプレートのリストにアクセスする方法については、構造的な検索と置換のセクションを参照してください。有効な検索または置換テンプレートは、サポートされている次の言語構造の 1 つを表します。式、たとえば、ステートメント、または一連のステートメント、たと...

名前でターゲットを検索する (どこでも検索)
プロジェクト内またはプロジェクト外のアイテムは、その名前で見つけることができます。単一のエントリポイントから、Git 内のファイル、アクション、クラス、シンボル、設定、UI 要素などを検索できます。プロジェクト内のテキストの検索の詳細については、「プロジェクト内で検索して置き換える」を参照してください。どこでも検索メインメニューで、に移動するか、を 2 回押して検索ウィンドウを開きます。デフォルトでは、PyCharm は最近使用したファイルのリストを表示します。もう一度を 2 回押すか、ニー...