ReSharper 2024.1 ヘルプ

正規表現の支援

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

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

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

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

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

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

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

    プロジェクトが .NET 7 以降をターゲットにしている場合は、対応するコンストラクター [StringSyntax(StringSyntaxAttribute.Regex)][ 文字列構文属性 ] を使用することもできます。

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

Validating regular expressions

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

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

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

  1. 正規表現にキャレットを置きます。

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

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

  4. 開いた正規表現を検証するダイアログで、テスト入力領域にいくつかのサンプル文字列を入力します。

    複数のサンプル文字列を同時にテストするには、文字列を改行で区切り、別々に行を確認するチェックボックスをオンにします。この場合、サンプルは 1 行の文字列である必要があることに注意してください。

  5. オプションリストを使用して、ダイアログのテスト入力に対して式を検証するときに使用される正規表現オプションを設定します。

  6. 一致テーブルには、テスト入力内の正規表現のすべての一致が一覧表示されます。一致をクリックして、テスト入力で見つけることができます。

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

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 のは非常に役立ちます。このフレームワークで宣言された属性を使用することに...

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

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

自動補完

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

スマート補完

このコマンドは、式の予想される型に一致するように、型、メソッド、変数のリストをフィルター処理します。ReSharper が式の予想される型(たとえば、割り当ての右辺、変数初期化子、return ステートメント)を判別できる限り、どこでも機能します。複数の戻り型が可能な場合、ReSharper は、該当する型の最後に使用されたシンボルを検出し、ルックアップリストでそれを自動的に選択します。Type-Matching Completion は、匿名デリゲート、ラムダ式、通常のメソッド、out パラメ...

ダブル補完

ReSharper のすべての補完ショートカットは、連続して数回押すことができます。この場合、ReSharper は補完リストにさらに多くの提案を追加します。新しい提案は緑の縦線でマークされているため、簡単に見つけることができます。必要に応じて、ReSharper オプション Alt+R, O のページで新しい項目をハイライトするチェックボックスをオフにして、このヘルパーをオフにすることができます。ダブル基本補完:基本補完を 2 回呼び出すと、ReSharper は補完リストにいくつかの新しい提案...

ASP.NET MVC 特有の機能

ReSharper には、一般的な ASP.NET 機能に加えて、ASP.NET MVC での作業をより簡単にサポートする特殊機能があります。構文のハイライト:ASP.NET MVC メソッド呼び出しとパラメーターの特別な構文のハイライト: コード補完:文字列リテラルでアクションとコントローラーを参照するための専用コード補完: ナビゲーションと検索:さまざまなナビゲーション機能がアクションとコントローラーでも機能します。コード生成:使用箇所から新しいコントローラーとアクションを作成する: 最終...