ReSharper 2020.3 ヘルプ

正規表現のアシスタンス

ReSharper は、.NET の正規表現で作業するための豊富なツールセットを提供します。既存の式をすばやく分析し、エラーを見つけて修正できます。ReSharper は、新しい式を入力する際に、自動補完と検証を支援します。

文字列リテラルの正規表現

デフォルトでは、ReSharper は、正規表現(英語)クラスのメソッドで、pattern パラメーターの正規表現のみを処理します。ただし、正規表現を含む文字列は、文字列定数、フィールド、他のメソッドの引数など、さまざまな場所で定義できます。ReSharper で文字列を正規表現として処理する場合、3 つの異なるオプションがあります。

  • コンテキストアクションを使用する: Alt+Enter を押しながら、キャレットが文字列内にあり、NET 正規表現としてマークするを選択します。

    ReSharper は、文字列に対応する記号の範囲を正規表現としてマークし、その範囲を内部データベースに保存し、格納ファイルの変更に合わせて追跡します。この方法は非常に迅速かつ簡単ですが、VCS マージなどの外部ファイルの変更後に範囲が失われる可能性があり、この方法でマークされたインジェクションはローカルでのみ追跡されます。

    後で正規表現として文字列の処理を無効にする場合は、.NET の正規表現マークを削除するコンテキストアクションを使用できます。

  • 別の方法は、JetBrains.Annotations[RegexPatternAttribute] を使用して、独自のメソッド、パブリックフィールド、またはプロパティのパラメーターに正規表現としてアノテーションを付けることです。

    ReSharper は、メソッド呼び出しおよび割り当ての対応する引数を正規表現として処理します。

    Highlighting regular expressions in arguments
  • 3 番目の方法は、文字列リテラルの前のコメント /*language=regexp|jsregexp*/ です。これらのコメントは入力が必要で、コードを汚染する可能性がありますが、一方で、コードを読むすべての人にインテンションを明確にし、失われることはなく、ReSharper でコードを開いた人は誰でも同じ機能を利用できます。マークされた文字列。ちなみに、コメントのフォーマットは IntelliJ プラットフォームベースの IDE(英語) と互換性があります。

    Regex injection in C# string with comment

構文のハイライト

ReSharper は構文構造と、正規表現のエラーと冗長性を強調しています:

Highlighting of regular expressions

ハイライトの色は、次の意味を持ちます。

  • ライトブルー - 文字クラス、アンカー、数量子

  • ライトグリーン - グループ化構成要素

  • オレンジ色の構成要素

  • ピンクとライトピンク - エスケープシーケンス

  • グリーン - コメント

  • 赤い波線の下線付き - エラー

  • 青い波の下線 - 警告

区切り文字の 1 つにキャレットを設定すると、角括弧のグループ、マッピング、グループ名、セットがハイライトされます。ReSharper オプションの環境 | エディター | 外観ページの一致する区切り文字をハイライトする設定を使用して、このハイライトを切り替えて調整することができます。

デフォルトでは、ReSharper は、すべての非逐語的な文字列の正しいおよび不正なエスケープシーケンスをハイライトします。

Highlighting of escape sequence in a string

必要に応じて、ReSharper オプションのコードインスペクション | 設定ページの文字列リテラルの特殊文字をハイライトするチェックボックスをオフにして、このハイライトをオフにすることができます。

エラーを直す

正規表現のエラーを修正するには、赤いハイライトにキャレットを設定し、Alt+Enter を押してから、対応するクイックフィックスを選択します。

正規表現エラーの最も一般的な例は、エスケープ文字の誤用です。

Regular expression error

ReSharper は自動的にエラーを修正できます:

Fixing regex error with ReSharper

検証とテスト

ReSharper を使用すると、設計時またはデバッグ中に正規表現パターンを検証してテストできます。正規表現を検証するダイアログでは、さまざまなサンプル文字列を入力し、正規表現がこれらの文字列とどのように一致するかを確認できます。このダイアログはメインメニューの ReSharper | ツール | 正規表現を検証するで利用できます。このダイアログを使用して、式を修正し、目的の一致が得られることを確認できます。

Validating regular expressions

ReSharper は、標準の .NET 正規表現エンジンを適用して、式の処理に実行時とまったく同じように動作します。サンプル文字列内のすべての一致がハイライトされます。

また、マッチはマッチ、マッチのグループ、グループのキャプチャー(2 つ以上ある場合)によってツリービューに表示されます。ツリー内のノードを選択すると、サンプル文字列の対応する部分と正規表現内のグループをハイライトできます(グループまたはキャプチャーが選択されている場合)。

コードの正規表現を検証する

  1. キャレットを正規表現に設定します。

  2. Alt+Enter を押すか、キャレットの左側にあるアクションインジケーターをクリックして、アクションリストを開きます。

  3. 正規表現を検証する コンテキストアクションを選択します。

  4. 開いた正規表現を検証するダイアログで、テスト入力領域にサンプル文字列をいくつか入力します。
    複数のサンプル文字列を同時にテストするには、文字列を改行で区切り、別々に行を確認するチェックボックスをオンにします。この場合、サンプルは単一行の文字列でなければならないことに注意してください。

  5. 必要に応じて、オプションドロップダウンリストの正規表現オプションをエンジンに変更することができます。

  6. 正規表現が正常に機能する場合は、挿入をクリックしてコードに挿入し直します。

IntelliSense

ReSharper は、ほぼすべての .NET 正規表現構成に対して IntelliSense サポートを提供します。補完リストでは、各構成要素が簡単な説明と共に示されています。

Code completion in regular expressions

正規表現では、次のタイプの IntelliSense を使用できます。

  • 自動補完 - \([ 文字の後にトリガーされます

  • 基本補完 Control+Space –現在のスコープで使用可能な要素を示します

  • スマート補完 Control+Shift+Space –現在のスコープで最も可能性の高い要素を示しています

  • ダブル補完Control+Space 2 回) - すべての可能な要素を表示

ReSharper の Intellisense を Match.Groups プロパティ(英語)を使用すると恩恵を受けることもできます。ReSharper は、式のグループ名を検出し、補完リストで提案します。

Group names completion

プリコンパイルされた正規表現を抽出する

Regex クラスの静的メソッドで使用される正規表現を再利用する必要がある場合は、その正規表現をコンパイル済みの正規表現に抽出できます。

正規表現を抽出するには、メソッド呼び出しのどこにでもキャレットを設定し、Alt+Enter を押して、プリコンパイルされた正規表現コンテキストアクションを選択します。

例: IsMatch(英語) メソッドの pattern パラメーターから正規表現を抽出することができます。

public void Bar() { var result = Regex.IsMatch("Input", "Pattern"); }

コンテキストアクションを適用した後、パターンは静的フィールドに抽出されます。

private static readonly Regex Regex1 = new Regex("Pattern"); public void Bar() { var result = Regex1.IsMatch("Input"); }

この機能は、次の言語とテクノロジーでサポートされています。

C# の機能の使用方法については、こちらの説明と例を参照してください。他言語の詳細については、言語による ReSharper の対応するトピックを参照してください。

関連ページ:

アノテーションを使用してコードインスペクションを調整する

コード検査や他の多くの ReSharper の機能は、問題を検出し、改善を提案し、他の方法であなたを手助けするために、言語構成の動作を知ることに主に依存しています。しかし、この種の分析ではすべてを検出することはできません。例: メソッドがを返さないように設計されており、そのクライアントがそれに応じて設計されている場合、誰かがを返すメソッドを変更した場合、構造分析によって問題が見つかることはありません。これと他の多くのケースでは、ReSharper のは大きな助けになります。このフレームワークで宣...

正規表現を検証するダイアログ

その名前が示すように、このダイアログは、さまざまなテスト入力を使用して正規表現を検証できます。ダイアログは 2 つの場合に表示されます: ソースコードで正規表現を検証することを選択した場合、ダイアログが開き、現在の正規表現が表示されます。メニューから開くと、式とテスト入力の両方を指定できるダイアログが空に表示されます。このダイアログには、次のコントロールがあります。正規表現ここでは、検証する正規表現を表示および編集できます。オプション This combo box allows you to set...

アクションインジケータとアクションリスト

ReSharper が Visual Studio テキストエディターに追加する最も注目すべきものの中には、アクションインジケータとアクションリストがあります。これらは、ReSharper でサポートされているすべてのファイル(C#、VB.NET、XML、CSS、JavaScript、ASP.NET など)に表示され、使用可能なアクションについて通知し、適用できます。アクションインジケータ:アクションインジケータは、設定に応じて、アクションバーの左マージンやテキストエディターの本文に表示される...

自動補完

ReSharper の自動補完は、クラス、メソッド、変数、キーワード、以前にインポートされた拡張メソッドを含む現在の可視性スコープ内で使用可能なその他のシンボルの名前を提案します。ライブテンプレート、コード生成の提案、単体テストのカテゴリなど、他の多くのコンテキスト固有の提案も補完リストで利用できます。デフォルトでは、自動補完の提案には、スマート補完およびインポートシンボル補完のアイテムも含まれます。デフォルトの動作を変更する場合は、ReSharper オプション(Alt+R, O)のページにあ...

基本補完

ReSharper の基本補完は、クラス、メソッド、変数、キーワード、以前にインポートされた拡張メソッドを含む現在の可視性スコープ内で使用可能なその他のシンボルの名前を提案します。ライブテンプレート、コード生成の提案、単体テストのカテゴリなど、他の多くのコンテキスト固有の提案も補完リストで利用できます。デフォルトでは、基本補完の提案には、スマート補完およびインポートシンボル補完のアイテムも含まれます。デフォルトの動作を変更する場合は、ReSharper オプション(Alt+R, O)のページにあ...

スマート補完

このコマンドは、型、メソッド、変数のリストをフィルターして、式の予想される型に一致させます。ReSharper が、代入、変数初期化子、または return 文の右辺など、期待される式の型を決定できる限り、どこでも動作します。いくつかのリターン型が可能な場合、ReSharper は適用可能な型の直前に使用されたシンボルを検出し、ルックアップリスト内でそれを自動的に選択します。スマート補完は、匿名の代理人、ラムダ式、および通常のメソッド、out パラメーター用のローカル変数の作成を提案することもで...