regexvisual-studioreplacevisual-studio-2005

Visual Studio, Find and replace, regex


I am trying to replace all the #include "whatever.h" with #include <whatever.h> using find and replace functionality in Visual Studio 2005. I used the regex \#include \"[a-z\.h]+\" to find the include statement. But I am wondering how frame the replace regex.

\#include \<[a-z\.h]+\> did not work and won't; it replaces the statement #include "whatever.h" with #include <[a-z.h]+>. How shall I frame the replace regex to retain whatever.h as it is?


Solution

  • For versions before Visual studio 2012:
    It works when I do this:
    find include "{[a-zA-Z]+\.h}",
    replace with include <\1>.
    The most relevant parts for your question are the curly braces {} and the back reference \1: \n references to the n'th group indicated by curly braces in the search expression.

    For versions Visual studio 2012 & up:
    Starting with VS2012 .NET Framework regular expressions are used. So there it should be:
    find include "([a-zA-Z]+\.h)",
    replace with include <$1>.