it-swarm.com.de

Welche Regex-Variante verwendet Visual Studio Code?

Beim Versuch, in Visual Studio Code zu suchen und zu ersetzen, stelle ich fest, dass sich die Regex-Variante von der in Visual Studio unterscheidet. Insbesondere versuche ich, eine benannte Gruppe mit string (?<p>[\w]+) zu deklarieren, die in Visual Studio, aber nicht in Visual Studio-Code funktioniert. Es wird mit dem Fehler beschweren Invalid group.

Abgesehen von der Lösung dieses speziellen Problems suche ich nach Informationen über die Regex-Variante in Visual Studio Code und wo sich Dokumentation dazu befindet, damit ich mir bei allen anderen Fragen, auf die ich stoßen könnte, helfen kann.

In Full Visual Studio werden reguläre .NET-Ausdrücke wie folgt verwendet hier . Dieser Link wird als Dokumentation für VS-Code an anderer Stelle in Stackoverflow erwähnt, ist es aber nicht.

101
Eric

Rust Regex in der Seitenleiste Suchen/Ersetzen in Dateien

Rob Lourens von MSFT schrieb, dass die Dateisuche Rust Regex verwendet. Die Rust-Sprachdokumentation beschreibt die Syntax.

Rob Lourens on GitHub

JavaScript-Regex im Widget "Suchen/Ersetzen in Datei"

Alexandru Dima von MSFT schrieb, dass das Such-Widget JavaScript-Regex verwendet. Wie Wicktor kommentierte, beschreibt Dokumentation von ECMAScript 5 die Syntax. Das Gleiche gilt für MDN JavaScript-Handbuch für reguläre Ausdrücke .

Alexandru Dima on GitHub

Testen Sie den Unterschied

Die Seitenleiste "In Dateien suchen" unterstützt (?=foobar) nicht, wohingegen das Widget "In Dateien suchen" diese Lookahead-Syntax unterstützt.

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

In Bezug auf Suchen/Ersetzen durch Gruppen

Verwenden Sie zum Suchen/Ersetzen durch Gruppen die Klammern () zum Gruppieren und $1, $2, $3, $n ersetzen.

Hier ist ein Beispiel.

Vor:

This is the text before the replace.

Nach:

This is the text after the replace.

137
Shaun Luttin

Shauns Antwort ist immer noch korrekt, jedoch um ein Update hinzuzufügen kürzlich VS Code hinzugefügt die Option, sich für die Verwendung der Perl-basierten PCRE2-Engine zu entscheiden . Sie können dies über Ihre Einstellungskonfiguration aktivieren.

Auf diese Weise können Sie erweiterte reguläre Ausdrücke wie Lookaheads und Rückverweise ausführen. Aber als notiert unten muss der reguläre Ausdruck immer noch gültiger JavaScript-regulärer Ausdruck sein.

VS Code unterstützt zwar die Suche nach regulären Ausdrücken, jedoch werden Rückverweise und Lookaround standardmäßig nicht unterstützt. Sie können diese aber mit der Einstellung search.usePCRE2 aktivieren. Dadurch wird ripgrep für die Verwendung der PCRE2-Regex-Engine konfiguriert. Während PCRE2 viele andere Funktionen unterstützt, unterstützen wir nur reguläre Ausdrücke, die in JavaScript noch gültig sind , da offene Editoren weiterhin mit der JavaScript-basierten Suche des Editors durchsucht werden .

Und für einen Bonus , wenn Sie hier gelandet sind und versucht haben, mehrzeilige Suchen durchzuführen, VS Code hat diese Funktion kürzlich ebenfalls hinzugefügt !

enter image description here

7
protoEvangelion