Visual Studio, Znajdź i zamień, wyrażenie regularne

143

Próbuję zastąpić wszystkie #include "whatever.h"przy #include <whatever.h>użyciu funkcji znajdowania i zamieniania w programie Visual Studio 2005. Użyłem wyrażenia regularnego, \#include \"[a-z\.h]+\"aby znaleźć instrukcję include. Ale zastanawiam się, jak skomponować wyrażenie regularne zamiany.

\#include \<[a-z\.h]+\>nie zadziałało i nie zadziała; zastępuje oświadczenie #include "whatever.h"z #include <[a-z.h]+>. Jak mam obramować wyrażenie regularne zamiany, aby zachować whatever.htakie, jakie jest?

bdhar
źródło

Odpowiedzi:

225

W wersjach przed Visual Studio 2012:
To działa, kiedy to zrobić:
find include "{[a-zA-Z]+\.h}",
wymienić include <\1>.
Najistotniejszymi częściami twojego pytania są nawiasy klamrowe {}i odniesienie wsteczne \1: \nodniesienia do n-tej grupy wskazywanej przez nawiasy klamrowe w wyszukiwanym wyrażeniu.

W przypadku wersji Visual Studio 2012 i
nowszych : począwszy od VS2012 .NET Framework używane są wyrażenia regularne. Tak więc powinno być:
znajdź include "([a-zA-Z]+\.h)",
zamień na include <$1>.

Miel
źródło
5
Wydaje się, że różni się to od standardowej składni wyrażeń regularnych, która używa nawiasów do tej funkcji.
Goblin Alchemist,
44
Teraz jest inaczej w programie Visual Studio 2012. Zamiast \ 1 należy użyć $ 1. () zastępuje teraz {}. Teraz bardziej spójny ze wszystkimi innymi. msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
oillio
1
Służy [a-zA-Z0-9_]do przechwytywania większej liczby nazw plików.
Reinier Torenbeek,
1

Musisz wybrać zarówno Dopasuj wielkość liter, jak i Wyrażenia regularne dla wyrażeń regularnych z wielkością liter. W przeciwnym razie [az] nie zadziała.wprowadź opis obrazu tutaj

David Morrow
źródło