【问题标题】:Visual Studio, Find and replace, regexVisual Studio、查找和替换、正则表达式
【发布时间】:2011-03-09 23:49:57
【问题描述】:

我正在尝试使用 Visual Studio 2005 中的查找和替换功能将所有 #include "whatever.h" 替换为 #include <whatever.h>。我使用正则表达式 \#include \"[a-z\.h]+\" 来查找包含语句。但我想知道如何构建替换正则表达式。

\#include \<[a-z\.h]+\> 不起作用,也不会;它将声明 #include "whatever.h" 替换为 #include <[a-z.h]+>。我应该如何构建替换正则表达式以保持 whatever.h 原样?

【问题讨论】:

    标签: regex visual-studio-2005 replace


    【解决方案1】:

    对于带大小写的正则表达式,您需要同时选择匹配大小写和正则表达式。 否则 [a-z] 将不起作用。

    【讨论】:

      【解决方案2】:

      对于 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>

      【讨论】:

      • 这似乎与使用括号来实现此功能的标准正则表达式语法不同。
      • 现在在 Visual Studio 2012 中有所不同。应该使用 $1 而不是 \1。 () 现在替换 {}。现在与其他所有人更加一致。 msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx
      • 使用[a-zA-Z0-9_] 捕获更多文件名。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 2021-08-19
      • 1970-01-01
      相关资源
      最近更新 更多