【问题标题】:Eclipse IDE, regular expression search and replaceEclipse IDE,正则表达式搜索和替换
【发布时间】:2017-10-24 05:26:27
【问题描述】:

我正在尝试在大型库中设置我的包含语句。 我需要编辑以“C:/Users/...”开头的特定包含路径,因此路径的结尾是“.h”,而不是“.h>” 一些不以“C:/Users/...”开头的路径需要保留“.h>”,因此为什么简单的查找“.h>”并替换为“.h””不起作用。

我有什么:#include "C:/Users/{various paths to different headerfiles}.h>

我需要什么:#include "C:/Users/{various paths to different headerfiles}.h"

有数百个头文件。在 Eclipse 中,菜单中的正则表达式选项框 (search->file) 是解决方案,但我没有成功使用正确的表达式。我得到的最接近的是:

搜索:(\Q#include "C:/Users\E\w+\.h>)$

替换:$1.h"

【问题讨论】:

  • 为什么要以绝对包含路径开头?通常它们与编译器的搜索路径有关。如果有的话,你应该像这样设置它们,而不是继续使用绝对路径。
  • @molbdnilo 我正在使用boost libraries,我不想使用绝对路径,但子文件夹头文件没有发现自己使用它们的默认包含路径,它们都从父目录开始(/升压)文件夹。他们通过绝对路径找到彼此。

标签: c++ regex eclipse search replace


【解决方案1】:

你可以使用

(#include "C:/Users.*\.h")$

regex demo

详情

  • #include "C:/Users - 文字字符串 #include "C:/Users
  • .* - 除换行符以外的任何 0+ 个字符,尽可能多
  • \. - 一个点
  • h" - 文字 h" 子字符串
  • $ - 字符串/行的结尾(取决于您使用它的位置以及是否通过 m 修饰符)。

(...) 创建一个捕获组,您可以使用 $1 反向引用从替换模式中引用该组。

【讨论】:

  • 感谢 Wiktor,我将表达式修改为在插入额外空格或制表符的情况下是安全的:(#[ \t]*?include[ \t]*?".*\. h>)
【解决方案2】:

谢谢@Wiktor-Stribiżew!

对于那些有正则表达式问题的人,Wiktor 发布了一个非常有用的链接,让您自己进行测试,并尝试自己解决问题。

(#include "C:/Users.*.h")$ 解决了我的搜索问题。

我用“$1fixThis”替换了我的搜索,给它一个唯一的名字,这样我就可以做一个基本的搜索和替换来修复我的包含路径的引号。

【讨论】:

  • 您应该通过评论通知我,以便我可以发布解决方案,因为它对您有用。
猜你喜欢
  • 2010-11-25
  • 1970-01-01
  • 2018-11-10
  • 2013-06-14
  • 1970-01-01
  • 2018-05-25
  • 2010-10-30
相关资源
最近更新 更多