ReSharper 2018.2ヘルプ

正規表現のアシスタンス

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を押してから、対応するquick-fixを選択します。

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

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

正規表現では、4種類のIntelliSenseを使用できます。

  • 自動補完 - \( 、および [ 文字の後にトリガされる

  • 基本補完Ctrl+Space) - 現在のスコープで使用可能な要素を表示します。

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

  • ダブル補完Ctrl+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"); }

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

Language: C#

Language: VB.NET

Language: C++

Language: HTML

Language: ASP.NET

Language: Razor

Language: JavaScript

Language: TypeScript

Language: CSS

Language: XML

Language: XAML

Language: Resx

Language: Build Scripts

Language: Protobuf

Language: JSON

Feature is available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

Feature is available

Feature is available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

Feature is available

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

最終更新日: 2018年11月5日

関連事項