Visual Studio, Найти и заменить, регулярное выражение


147

Я пытаюсь заменить все #include "whatever.h"с #include <whatever.h>помощью функции поиска и замены в Visual Studio 2005. Я использовал регулярное выражение, \#include \"[a-z\.h]+\"чтобы найти оператор include. Но мне интересно, как создать замену регулярного выражения.

\#include \<[a-z\.h]+\>не получилось и не будет; он заменяет оператор #include "whatever.h"на #include <[a-z.h]+>. Как мне создать заменяющее регулярное выражение, чтобы сохранить whatever.hего как есть?

Ответы:


231

Для версий до Visual studio 2012:
работает, когда я делаю следующее:
найти include "{[a-zA-Z]+\.h}",
заменить на include <\1>.
Наиболее важными частями для вашего вопроса являются фигурные скобки {}и обратная ссылка \1: \nссылки на n-ю группу, обозначенную фигурными скобками в поисковом выражении.

Для версий Visual Studio 2012 и выше:
Начиная с VS2012, используются регулярные выражения .NET Framework. Так и должно быть:
найти include "([a-zA-Z]+\.h)",
заменить на include <$1>.


5
Кажется, это отличается от стандартного синтаксиса регулярных выражений, в котором для этой функции используются круглые скобки.
Goblin Alchemist

46
В Visual Studio 2012 он изменился. Вместо \ 1 следует использовать $ 1. () теперь заменяет {}. Теперь он более согласован со всеми. msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
oillio 05

2
Используйте [a-zA-Z0-9_]для захвата большего количества имен файлов.
Рейнир Торенбек

1

Для регулярных выражений с регистром необходимо выбрать как Match Case, так и Regular Expressions. Иначе [az] не сработает.введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.