Visual Studioコードで検索置換しようとしたところ、正規表現のフレーバーが完全なVisual Studioとは異なることがわかりました。具体的には、Visual Studioでは機能するがVisual Studioコードでは機能しないstring (?<p>[\w]+)
を使用して名前付きグループを宣言しようとします。エラーInvalid group
が表示されます。
この特定の問題を解決することとは別に、私はVisual Studioコードの正規表現の種類とそれに関するドキュメントの場所に関する情報を探しています。
完全なVisual Studioはここで文書化されているように .NET正規表現を使用します 。このリンクは、Stackoverflowの他の場所でVS Codeのドキュメントとして言及されていますが、そうではありません。
MSFTのRob Lourens は、ファイル検索にRust正規表現を使用すると書いています。 Rust言語のドキュメント に構文が説明されています。
MSFTのAlexandru Dima は、検索ウィジェットはJavaScriptの正規表現を使用すると書いています。 Wicktorがコメントしたように、 ECMAScript 5のドキュメント は構文を説明しています。 MDN JavaScript正規表現ガイド もそうです。
ファイル内検索サイドバーは(?=foobar)
をサポートしませんが、ファイル内検索ウィジェットはその先読み構文をサポートします。
グループを検索/置換するには、グループ化するには()
、置換するには$1
、$2
、$3
、$n
を使用します。
これが一例です。
前:
後:
ショーンの答え は依然として正しいが、アップデートを追加するには 最近VSコードが追加されたPerlベースのPCRE2エンジンを使用することを選択するオプション。これは、設定構成で有効にできます。
これにより、lookaheadsやbackreferencesなどのより高度な正規表現操作を実行できます。しかし、下の noted のように、正規表現はvalid JavaScript regexでなければなりません。
VS Codeは正規表現検索をサポートしますが、デフォルトでは後方参照とルックアラウンドはサポートされていません。ただし、これらの設定はsearch.usePCRE2で有効にできます。これにより、ripgrepがPCRE2正規表現エンジンを使用するように構成されます。 PCRE2は他の多くの機能をサポートしますが、開いているエディターは引き続きエディターのJavaScriptベースの検索を使用して検索されるため、JavaScriptでも有効の正規表現のみをサポートします。
ボーナスの場合複数行の検索をしようとしてここにたどり着いた場合、 VS Codeも最近その機能を追加しました !