PhpStorm 2025.2 ヘルプ

構造検索と置換の例

ご存知のように、通常の検索と構造検索の主な違いは、構造検索ではプログラミング言語の構造テンプレートを探していることです。

構造検索の利点は、既存のテンプレートに基づいてパターンを作成し、コードの検索と置換にかかる時間を節約できることです。

既存のテンプレートの広範なリストは、単純なパターンからより複雑なパターンまで、多くのユースケースをカバーしています。

パターン内の各アイテムは、両側の $ 記号によって制限される変数で構成されます。

メソッド呼び出し

メソッド呼び出しを検索するための最も簡単なテンプレートは $Instance$->$MethodCall$($Arguments$) です。

検索ツールウィンドウには、検出されたメソッド呼び出しが表示されます。

特定の数の引数を持つメソッド呼び出しを見つける必要がある場合は、$Arguments$ 変数にキャレットを置き、その変数に対してフィルターを構成します。

ソースコード内のメソッド呼び出しに移動するには、検索ツールウィンドウ内でそれをダブルクリックします。PhpStorm は対応するファイルをエディターで開き、キャレットをメソッド呼び出しに移動します。

Structural search method call.png

PHP クラス

PHP クラス MyClass をお持ちの場合:

class MyClass {}

それからそれを検索する最も簡単なテンプレートは class $a$ {} です。

インターフェースの実装

PHP インターフェース MyInterface とそれを実装するクラス Implementation がある場合:

class Implementation implements MyInterface{}

次に、実装を検索するための最も簡単なテンプレートは class $Class$ implements $SomeInterface$ {} です。

子孫クラス

PHP クラス Parent とそれを拡張するクラス Descendant を持っている場合

class Descendant extends Parent{}

Descendant を検索するための最も簡単なテンプレートは class $Class$ extends $AnotherClass$ {} です

ステートメント

if ステートメントが if($var$){$code$} である場合に検索するための最も簡単なテンプレート

結果として、検出された出現は検索ツールウィンドウに表示されます。ソースコードに移動するために興味があるものをダブルクリックしてください。PhpStorm はエディターで対応するファイルを開き、ステートメントにキャレットを配置します。

Structural search if statement

コメントと文字列リテラル

foo を含むコメントまたはリテラルを見つけるための最も簡単なテンプレートは、$SomethingWeWantToFind$ または "$SomethingWeWantToFind$" です。特定の単語を含むコメント / 文字列(単語として foo など)を検索するには、これをテキスト制約として指定する必要があります。

HTML と XML の例

次の例は、HTML および XML コードで構造検索を使用する方法を示しています。

XML および HTML タグ、属性、それらの値の検索

タグを検索する最も簡単なテンプレートは <$tag$/> です。

  1. 変数 $tag$ に制約を設定することにより、検索するタグを指定できます。例: li を指定すると、すべての li タグが取得されます。

  2. XML および HTML で検索するための次のテンプレートを検討してください: <$tag$ $attribute$=$value$ /> 例: $attribute$ 変数にテキストフィルター id を指定し、$value$ 変数にテキストフィルターとして \d+ 正規表現を指定すると、id 属性に数値を持つすべてのタグを見つけることができます。

    Searching for li tags with numeric ids

id 属性が 2 より大きい行をすべて削除する

  1. 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>
  2. メインメニューで、編集 | 検索 | 構造検索に移動します。

  3. 言語リストから、HTML を選択します。

  4. 次の文字列を検索テンプレートフィールドに貼り付けます。

    <$tag$ $attribute$="$value$">
  5. $tag$ 変数をクリックします。

  6. フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに li と入力します。

    フィルターパネルが表示されていない場合は、 検索演算子パネルの切り替えをクリックします。

    Toggle Filter Panel
  7. $attribute$ 変数をクリックします。

  8. フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに id と入力します。

  9. $value$ 変数をクリックします。

  10. フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに \d+ と入力します。

    \d+ 正規表現は、検索結果を数値に制限します。そのため、id="a" のある行は除外されます。

  11. フィルターパネルからフォーカスを切り替えずに、追加ボタンをクリックし、スクリプトを選択して、次のコードを貼り付けます。

    value.getText().replaceAll (/"/, '').toInteger() > 2

    スクリプトは $value$ 変数の内容を読み取り、それを文字列として返します(たとえば、"1")。次に、スクリプトはすべての引用符を置き換え、文字列値を整数に変換して、2 と比較します。

    Delete lines with ids greater than 2

li タグのクラス属性の大文字の値を小文字に変換する

  1. 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>
  2. メインメニューで、編集 | 検索 | 構造置換に移動します。

  3. 言語リストから、HTML を選択します。

  4. 次の文字列を検索テンプレートフィールドに貼り付けます。

    <$tag$ $attribute$="$value$">
  5. 大 / 小文字を区別するチェックボックスを選択します。

  6. $tag$ 変数をクリックします。

  7. フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに li と入力します。

  8. $attribute$ 変数をクリックします。

  9. フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに class と入力します。

  10. $value$ 変数をクリックします。

  11. フィルターパネルで、修飾子の追加をクリックし、テキストを選択して、値フィールドに [A-Z].* と入力します。

    [A-Z].* 正規表現は、検索結果を大文字に制限します。

  12. ターゲットリストからを選択します。この手順では、class 属性のすべての大文字の値をハイライトします。

  13. 置換テンプレートフィールドに、$to_lower_case$ 変数を貼り付けます。

  14. $to_lower_case$ 変数をクリックします。

  15. フィルターパネルで、修飾子の追加をクリックし、スクリプトを選択して、次のコードを貼り付けます。

    value.getText().toLowerCase()
    Replace a target structurally
  16. 検索をクリックします。

  17. 検索ツールウィンドウで、見つかった結果をプレビューし、すべて置換をクリックします。

    find.replace.all.action
2024 年 2 月 11 日

関連ページ:

検索テンプレート、修飾子、スクリプトの制約

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

データベースでの全文検索

データの正確な場所を知らなくても、データベースまたはデータベースのグループでデータを検索できます。データベース、スキーム、別々のテーブル内のデータを検索するデータベースツールウィンドウで、検索を実行するオブジェクトを選択します。データベース、データベースグループ、スキーム、あるいは個別のテーブルを選択することもできます。選択を右クリックしてを選択します。あるいは、を押します。全文検索ダイアログの検索フィールドに検索リクエストを入力し、検索をクリックします。検索ツールウィンドウで、検索結果を確認