Suchen und Ersetzen von Visual Studio-Code durch reguläre Ausdrücke

116

Ich möchte „Suchen und Ersetzen“ in Visual Studio - Code verwenden , jede Instanz zu ändern , <h1>content</h1>um #### contentin einem Dokument einen regulären Ausdruck verwenden.

Wie kann ich das erreichen?

Tom
quelle
2
Muss es ein Regex sein, der findet und ersetzt? Könnten Sie ersetzen <h4>mit #### und ersetzen Sie dann </h4>mit ''?
Brett East

Antworten:

190

Ihr Ziel ist es also zu suchen und zu ersetzen?
Laut dem Tastatur-Shotcuts-PDF von Official Visual Studio können Sie Ctrl + Hunter Windows und Linux oder ⌥⌘Fauf Mac drücken , um das Such- und Ersetzungstool zu aktivieren:

Registerkarte "Suchen und Ersetzen" von Visual Studio Code Wenn Sie den Code deaktivieren möchten, müssen Sie nur <h1>suchen und ersetzen ####.

Wenn Sie diesen regulären Ausdruck stattdessen verwenden möchten, können Sie ihn im Symbol aktivieren: . *und den regulären Ausdruck verwenden: <h1>(.+?)<\/h1>und durch ersetzen : #### $1.

Und wie @tpartee vorgeschlagen hat, finden Sie hier weitere Informationen zur Visual Studio-Engine, wenn Sie mehr erfahren möchten:

Mateus
quelle
3
Visual Studio behandelt den regulären Ausdruck wie jede andere Anwendung. Der einzige Unterschied besteht in den sogenannten regulären Ausdrucksvarianten, die der "Compiler" des regulären Ausdrucks sind und wie der Ausdruck behandelt wird. Normalerweise wird es in Antworten wie diesen ignoriert, da die meisten von ihnen ziemlich ähnlich sind, aber für diejenigen, die es noch überprüfen möchten, habe ich es der Antwort hinzugefügt
Mateus
2
Die Frage bezieht sich auf Visual Studio-Code, und diese Antwort bezieht sich auf Visual Studio.
Dustin Wyatt
1
oder ändern Sie Ihre Tastenkombinationen. Beispiel: Durch IDEA Keybindings ( marketplace.visualstudio.com/... ), könnten Sie verwenden: Strg + Shift + R für in - Pfad ersetzen oder für Suche In Pfad: Strg + Umschalt + F
SL5net
6

Für Anfänger wollte ich die akzeptierte Antwort ergänzen, da mir einige Feinheiten unklar waren:

Um Text zu finden und zu ändern (nicht vollständig zu ersetzen),

  1. Im Schritt "Suchen" können Sie Regex mit "Erfassen von Gruppen" verwenden, z. B. könnte Ihre Suche in la la la (group1) blah blah (group2)Klammern erfolgen.

  2. Und dann in dem „Ersetzen“ Schritt können Sie die Erfassungsgruppen beziehen über $1, $2usw.

In diesem Fall könnten wir beispielsweise den relevanten Text mit nur <h1>.+?<\/h1>(keine Klammern) finden, aber wenn wir die Klammern einfügen, <h1>(.+?)<\/h1>können wir uns wie $1im Ersetzungsschritt auf die Unterübereinstimmung zwischen ihnen beziehen . Cool!

Anmerkungen

  • Um Regex im Such-Widget zu aktivieren, klicken Sie auf das .*Symbol oder drücken SieCmd/Ctrl Alt R

  • $0 bezieht sich auf das ganze Spiel

  • Schließlich heißt es in der ursprünglichen Frage, dass das Ersetzen "innerhalb eines Dokuments" erfolgen soll, sodass Sie das "Widget suchen" ( Cmdoder Ctrl+ F) verwenden können, das für das geöffnete Dokument lokal ist, anstelle von "Suchen", das eine größere Benutzeroberfläche öffnet und durchsucht alle Dateien im Projekt.

Tedskovsky
quelle
0

Stellen Sie sicher, dass Übereinstimmungsfall mit Regulären Ausdruck verwenden ausgewählt ist, damit dies übereinstimmt. [AZ] * Wenn kein Übereinstimmungsfall ausgewählt ist, stimmt dies mit allen Buchstaben überein.

David Morrow
quelle
-3

Testen Sie es hier: Regex Storm

Beispiel:

Regex: <option value=".*.">|</option>

Text:

<option value="1">Something</option>

Ergebnis:

etwas

JOSE DE JESUS ​​BECERRA VAZQUEZ
quelle