Visual Studio, Suchen und Ersetzen, Regex


142

Ich versuche , alle die zu ersetzen , #include "whatever.h"mit #include <whatever.h>Verwendung von Suchen und Ersetzen - Funktionalität in Visual Studio 2005. Ich die Regex verwendet , \#include \"[a-z\.h]+\"um die Erklärung enthalten zu finden. Aber ich frage mich, wie die Regex ersetzen.

\#include \<[a-z\.h]+\>hat nicht funktioniert und wird nicht; es ersetzt die Anweisung #include "whatever.h"durch #include <[a-z.h]+>. Wie soll ich den Ersatz-Regex so gestalten, dass er unverändert whatever.hbleibt?

Antworten:


225

Für Versionen vor Visual Studio 2012:
Es funktioniert, wenn ich dies tue:
Suchen include "{[a-zA-Z]+\.h}",
Ersetzen durch include <\1>.
Die relevantesten Teile für Ihre Frage sind die geschweiften Klammern {}und die Rückreferenz \1: \nVerweise auf die n-te Gruppe, die durch geschweifte Klammern im Suchausdruck angegeben wird.

Für Versionen von Visual Studio 2012 und
höher : Ab VS2012 .NET Framework werden reguläre Ausdrücke verwendet. Da sollte es also sein:
finden include "([a-zA-Z]+\.h)",
ersetzen durch include <$1>.


5
Dies scheint sich von der Standardsyntax für reguläre Ausdrücke zu unterscheiden, bei der für diese Funktionalität Klammern verwendet werden.
Goblin Alchemist

44
In Visual Studio 2012 ist dies jetzt anders. $ 1 sollte anstelle von \ 1 verwendet werden. () ersetzt jetzt {}. Beständiger mit allen anderen jetzt. msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
oillio

1
Verwenden Sie [a-zA-Z0-9_]diese Option , um weitere Dateinamen zu erfassen.
Reinier Torenbeek

1

Sie müssen sowohl Groß- / Kleinschreibung als auch reguläre Ausdrücke für Regex-Ausdrücke mit Groß- und Kleinschreibung auswählen. Sonst funktioniert [az] nicht.Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.