web-dev-qa-db-ja.com

Visual Studio Codeはどの種類の正規表現を使用しますか?

Visual Studioコードで検索置換しようとしたところ、正規表現のフレーバーが完全なVisual Studioとは異なることがわかりました。具体的には、Visual Studioでは機能するがVisual Studioコードでは機能しないstring (?<p>[\w]+)を使用して名前付きグループを宣言しようとします。エラーInvalid groupが表示されます。

この特定の問題を解決することとは別に、私はVisual Studioコードの正規表現の種類とそれに関するドキュメントの場所に関する情報を探しています。

完全なVisual Studioはここで文書化されているように .NET正規表現を使用します 。このリンクは、Stackoverflowの他の場所でVS Codeのドキュメントとして言及されていますが、そうではありません。

97
Eric

ファイル内の検索と置換サイドバーのさびた正規表現

MSFTのRob Lourens は、ファイル検索にRust正規表現を使用すると書いています。 Rust言語のドキュメント に構文が説明されています。

Rob Lourens on GitHub

ファイル内の検索/置換ウィジェット内のJavaScript Regex

MSFTのAlexandru Dima は、検索ウィジェットはJavaScriptの正規表現を使用すると書いています。 Wicktorがコメントしたように、 ECMAScript 5のドキュメント は構文を説明しています。 MDN JavaScript正規表現ガイド もそうです。

Alexandru Dima on GitHub

違いをテストする

ファイル内検索サイドバーは(?=foobar)をサポートしませんが、ファイル内検索ウィジェットはその先読み構文をサポートします。

Shows a lookahead working in the widget but not in the sidebar.

グループの検索/置換について

グループを検索/置換するには、グループ化するには()、置換するには$1$2$3$nを使用します。

これが一例です。

前:

This is the text before the replace.

後:

This is the text after the replace.

131
Shaun Luttin

ショーンの答え は依然として正しいが、アップデートを追加するには 最近VSコードが追加されたPerlベースのPCRE2エンジンを使用することを選択するオプション。これは、設定構成で有効にできます。

これにより、lookaheadsやbackreferencesなどのより高度な正規表現操作を実行できます。しかし、下の noted のように、正規表現はvalid JavaScript regexでなければなりません。

VS Codeは正規表現検索をサポートしますが、デフォルトでは後方参照とルックアラウンドはサポートされていません。ただし、これらの設定はsearch.usePCRE2で有効にできます。これにより、ripgrepがPCRE2正規表現エンジンを使用するように構成されます。 PCRE2は他の多くの機能をサポートしますが、開いているエディターは引き続きエディターのJavaScriptベースの検索を使用して検索されるため、JavaScriptでも有効の正規表現のみをサポートします。

ボーナスの場合複数行の検索をしようとしてここにたどり着いた場合、 VS Codeも最近その機能を追加しました

enter image description here

7
protoEvangelion