Antworten:
Stellen Sie sicher, dass im Dialogfeld Suchen und Ersetzen die Option "Verwenden: Reguläre Ausdrücke" ausgewählt ist:
Beachten Sie, dass dies für Visual Studio 2010 in der Erweiterung "Quick Find" von Visual Studio Productivity Power Tools nicht funktioniert (Stand: Update Juli 2011). Stattdessen müssen Sie das vollständige Dialogfeld "Suchen und Ersetzen" verwenden (Strg + Umschalt + H oder Bearbeiten -> Suchen und Ersetzen -> In Dateien ersetzen) und den Bereich in "Aktuelles Dokument" ändern.
\)
wenn reguläre Ausdrücke
?
Zeichen muss in Regex maskiert werden, da dies bedeutet, dass das vorherige Element optional ist. Somit ist der richtige "Find what" -Text ~~\?
, wobei das Fragezeichen durch einen Backslash gekennzeichnet ist. Die Antwort, die Sie gegeben haben, funktioniert mit dem Beispieltext, da er die zweite Tilde gierig findet und verbraucht. Wenn jedoch irgendwo eine einzelne Tilde im Text vorhanden ist, wird sie auch nicht ordnungsgemäß durch eine neue Zeile ersetzt.
Wenn Sie das Flag "Reguläre Ausdrücke verwenden" setzen, wird \ n übersetzt. Beachten Sie jedoch, dass Sie Ihren Suchbegriff ändern müssen, um regexp-freundlich zu sein. In Ihrem Fall sollte es wie folgt maskiert werden: "\ ~ \ ~ \?" (keine Anführungszeichen).
Führen Sie die folgenden Schritte aus, wenn Sie vermeiden möchten, dass die Sonderzeichen in Ihrer Such- und Ersatzzeichenfolge bei der Verwendung regulärer Ausdrücke nicht berücksichtigt werden:
Beachten Sie, dass Sie, selbst wenn Sie Übereinstimmungen für das erste Suchen und Ersetzen manuell pichen möchten, für die drei letzten Schritte sicher "Alle ersetzen" verwenden können.
Wenn Sie dies beispielsweise ersetzen möchten:
public IFoo SomeField { get { return this.SomeField; } }
damit:
public IFoo Foo { get { return this.MyFoo; } }
public IBar Bar { get { return this.MyBar; } }
Sie würden die folgenden Ersetzungen vornehmen:
public IFoo SomeField { get { return this.SomeField; } }
→ XOXOXOXO
(Regex aus ).XOXOXOXO
→ XOXOXOXO\nHUHUHUHU
(Regex ein ).XOXOXOXO
→ public IFoo Foo { get { return this.MyFoo; } }
(Regex aus ).HUHUHUHU
→ public IFoo Bar { get { return this.MyBar; } }
(Regex aus ).Sie können das mehrzeilige Suchen und Ersetzen im Visual Studio-Makro verwenden, das eine schöne Benutzeroberfläche für die Aufgabe bietet.