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 Code-批量在文末添加文本字段