Visual Studio正则表达式:使用正斜杠替换所有带反斜杠的#include语句

4

在我的C++代码中,我混用反斜杠和正斜杠作为#include语句的分隔符。我想要标准化使用正斜杠。

请注意,包含语句可能如下所示:

#include "file.h"
#include <file.h>
#include "dir\file.h"
#include <dir\file.h>
#include <dir1\dir2\file.h>
#include "..\file.h"

有没有人知道如何使用 Visual Studio 2013 的“查找和替换”正则表达式功能来做到这一点呢?


我认为你最好使用支持正则表达式的文本编辑器,比如*NotePad++*,并请告诉我们你期望的结果 ;)。 - shA.t
1个回答

6

查找: (#include.*?)\\

替换为: $1/

问题在于,当您有一个要求(在您的情况下是#include.*),但有多个匹配项时(因为文件路径中可以有任意数量的反斜杠),编写通用解决方案并不容易(有时甚至是不可能的)。

然而,为了保持简单,您可以使用上述正则表达式和替换方法,在所有行中查找第一个反斜杠,并将其替换为正斜杠。然后,您可以重复此过程多次,直到没有发现匹配项(次数等于文件路径的最大深度)。


谢谢,这个很好用!你说得对,它必须对某些行进行第二次甚至第三次处理,具体取决于有多少个''字符,但是这一行代码更新了我所有的代码。谢谢! - dan-O
抱歉在一个四年前的问题下添加评论。然而,今天我遇到了同样的问题,因为我想在Linux上使用winegcc编译一些Windows代码。我发现,与Visual Studio内部的简单strg-h _replace dialog_不同,使用strg-shift-h _replace in files dialog_非常容易,因为后者在每次运行后保持打开状态,而前者则会关闭。 - avans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接