Visual Studio, Знайти та замінити, регулярний вираз


143

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

\#include \<[a-z\.h]+\>не працював і не буде; він замінює заяву #include "whatever.h"на #include <[a-z.h]+>. Як я можу обрамляти регулярний вимір заміни для збереження whatever.hтаким, яким він є?

Відповіді:


225

Для версій до 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
Це, здається, відрізняється від стандартного синтаксису регулярних виразів, який використовує дужки для цієї функції.
Алхімік Гобліна

44
Зараз у Visual Studio 2012. вона відрізняється від $ 1, а не 1. () тепер замінює {}. Зараз більш стійкий з усіма іншими. msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
oillio

1
Використовуйте [a-zA-Z0-9_]для отримання більшої кількості імен файлів.
Реньє Торенбек

1

Для виразів регулярних виразів із регістром потрібно вибрати обидва випадки відповідності та регулярні вирази. Інше [az] не буде працювати.введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.