2010-06-30 18 views
105

Ich versuche, alle #include "whatever.h" durch #include <whatever.h> mit Suchen und Ersetzen Funktionalität in Visual Studio 2005 zu ersetzen. Ich habe die Regex \#include \"[a-z\.h]+\" verwendet, um die Include-Anweisung zu finden. Aber ich frage mich, wie Rahmen der ersetzen Regex.Visual Studio, Suchen und Ersetzen, Regex

hat nicht funktioniert und wird nicht; es ersetzt die Aussage #include "whatever.h" durch #include <[a-z.h]+>. Wie soll ich die ersetzen Regex um whatever.h beibehalten, wie es ist?

Antwort

168

Für Versionen vor Visual Studio 2012:
Es funktioniert, wenn ich dies tun:
finden include "{[a-zA-Z]+\.h}",
mit include <\1> ersetzen.
Die relevantesten Teile für Ihre Frage sind die geschweiften Klammern {} und die hintere Referenz \1: \n Verweise auf die n-te Gruppe, die durch geschweifte Klammern im Suchausdruck angezeigt wird.

Für Versionen von Visual Studio 2012 & up:
Beginnend mit VS2012 .NET Framework regulären Ausdrücke verwendet. So sollte es sein:
finden include "([a-zA-Z]+\.h)",
ersetzen mit include <$1>.

+4

Dies scheint sich von der regulären Syntax für reguläre Ausdrücke zu unterscheiden, die für diese Funktionalität Klammern verwendet. –

+2

Es ist anders, aber hey, wir können das nicht ändern ... – Miel

+34

Es ist jetzt anders in Visual Studio 2012. $ 1 sollte anstelle von \ 1 verwendet werden.() ersetzt nun {}. Jetzt ist es mehr mit allen anderen konsistent. http://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx – oillio