【问题标题】:How to search and replace 2 lines (together) in Eclipse?如何在 Eclipse 中搜索和替换 2 行(一起)?
【发布时间】:2011-03-11 00:25:18
【问题描述】:

我想通过eclipse在多个文件中搜索以下两行:

@Length(max = L_255)
private String description;

并用这两个替换它们:

@Length(max = L_255, message="{validator.description.len}")
private String description;

【问题讨论】:

  • 将该行作为代码显示它在 2 行上。 CTRL+H 不允许我添加 2 行进行搜索和替换

标签: eclipse editor replace


【解决方案1】:

关于如何获取选定块的正则表达式的另一个提示。 打开包含多行(多行)的文件之一进行搜索或替换。 点击Ctrl+F并选择“正则表达式”。关闭查找/替换窗口。 选择您需要的块并再次单击 Ctrl+F 以打开“查找/替换”窗口。 现在,在 Find 文本框中,您拥有与您的选择块完全匹配的正则表达式。

(我是在手动为很长的块创建正则表达式后才发现的:)

【讨论】:

  • 很好的提示!谢谢,你为我节省了很多时间来弄清楚如何构建我的正则表达式。
  • 您也可以使用此技巧构建正则表达式以复制到文件搜索中。节省大量时间,谢谢!
  • 这确实是一个很酷的功能,虽然它没有解决我的问题。
  • 不是所有的超级英雄都穿斗篷。这就是我没有看到的原因。
【解决方案2】:

当您使用正则表达式时,Eclipse 中默认搜索是多行的:

(\@Length\(max = L_255)\)([\r\n\s]+private)

我想添加“私有字符串描述;”

(\@Length\(max = L_255)\)([\r\n\s]+private\s+?String\s+description\s*?;)

替换为:

\1, message="{validator.description.len}")\2

它在由 CTRL-H 触发的文件搜索中完美运行。

正如Tikaanswer 中提到的,您可以直接复制“包含文本”字段中选择的两行:这些行将转换为正则表达式 Eclipse 为您服务。

【讨论】:

  • 我想添加“私有字符串描述;”也作为我搜索的一部分,因为 @Length(max = L_255) 行也存在于“私有字符串名称”等其他字段中。所以上面的建议是行不通的。
  • 我正在尝试搜索多个连续的行。
  • @Samuel:已添加图片,已更新答案以考虑您的完整线路。它适用于多个连续的行。试一试。
【解决方案3】:

如果您使用正则表达式,CTRL+H 确实需要两行(而且您不必自己编写正则表达式,eclipse 会为您完成)。

  1. 选择您的线路。
  2. 单击 CTRL+H。搜索对话框打开。 如果“正则表达式”已经被选中,eclipse 会为你将你搜索的两行代码转换成正则表达式,点击搜索。 如果“正则表达式”尚未选中,则选中它并单击“取消”(eclipse 会记住您的选择)。
  3. 再次选择行。
  4. 单击 CTRL+H。搜索对话框打开。这次已经选择了“正则表达式”。 eclipse 会将您搜索的两行代码转换为正则表达式,点击搜索。

【讨论】:

  • 我最喜欢您对解决方案的描述,简单、快速且万无一失。谢谢!
  • 第二行是隐藏的宝石功能..谢谢
【解决方案4】:

在手动构造的正则表达式中包含多行的快速提示:

在您通常使用.* 匹配任何字符零次或多次的情况下,请考虑使用(?:.|\r?\n)* 之类的东西。或者在末尾多加一个? 使其不贪婪。

解释. 不匹配新行,所以需要做一个“非此即彼”:括号匹配管道前的 .或它之后的新行。 \r 之后的 ? 使换行之前的回车成为可选的,以允许 Windows 或 Unix 换行。 ?: 将整个事物排除为捕获组(这有助于避免堆栈溢出)。

【讨论】:

  • 当我在 Eclipse (4.5) 中尝试此操作时:publisher(?:.|\r?\n)* 它在对话框“查找模式太复杂”中显示错误编辑:将问号添加到末尾为:publisher(?:.|\r?\n)*? 使这行得通!感谢您的提示和正则表达式解释。
  • 在某些情况下,如果我在要搜索的第二个单词中添加了太多字符,我仍然会看到“Find pattern too complex”错误。所以publisher(?:.|\r?\n)*?id 有效,但publisher(?:.|\r?\n)*?identification 显示错误
【解决方案5】:

单击 Ctrl + F 并选择“正则表达式”,然后搜索行。如果要对多个文件执行相同操作,请单击 Ctrl + H,单击“文件搜索”并执行相同操作。

【讨论】:

    【解决方案6】:

    选择包含所有文件的文件夹,然后按 Ctrl+H

    【讨论】:

    • 分开行吗?或者尝试使用多行正则表达式。
    • 我不能单独做,因为它可能会影响其他领域。我无法弄清楚能够正确识别上述两行的多行表达式,因此是这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多