Visual Studio、查找和替换、正则表达式

Posted

技术标签:

【中文标题】Visual Studio、查找和替换、正则表达式【英文标题】:Visual Studio, Find and replace, regex 【发布时间】: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 原样?

【问题讨论】:

【参考方案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_] 捕获更多文件名。

以上是关于Visual Studio、查找和替换、正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 中使用正则表达式查找和替换?

在 Visual Studio 中使用正则表达式

Visual Studio Code-批量在文末添加文本字段

Visual Studio 2003 中的正则表达式替换问题

Visual Studio代码量统计 代码行

Visual Studio 使用正则表达式查找无重复项