如何在Eclipse中搜索和替换2行(一起)?

时间:2010-07-02 09:15:05

标签: eclipse editor replace

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

@Length(max = L_255)
private String description;

并用这两个替换它们:

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

5 个答案:

答案 0 :(得分:55)

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

(我发现这一点,只有在为非常长的块手动创建regexp之后才会发现:)

答案 1 :(得分:39)

使用正则表达式时,默认情况下,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 触发的文件搜索中完美运行。

Eclipse multi-line search

Tikaanswer所述,您可以直接复制在“包含文本”字段中选择的两行:这些行将转换作为Eclipse的正则表达式

答案 2 :(得分:14)

如果你使用regexp,CTRL + H确实需要两行(你不必自己编写正则表达式,eclipse会为你做这个)。

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

答案 3 :(得分:3)

包含多行作为手动构建的正则表达式的一部分的快速提示:

您通常会使用.*来匹配任何字符零次或多次,而是考虑使用(?:.|\r?\n)*之类的内容。或者在最后添加额外的?以使其不贪婪。

解释 .与新行不匹配,因此需要执行“或 - 或”:括号与{匹配}管道之前的{1}}或之后的新行。 .之后的?使换行符在换行符之前可选,以允许Windows或Unix换行。 \r将整个事件排除为捕获组(这有助于避免堆栈溢出)。

答案 4 :(得分:-1)

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