如何能够通过eclipsesearch并replace2行(在一起)?

我想通过eclipsesearch多个文件以下两行:

@Length(max = L_255) private String description; 

并用这两个replace它们:

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

在使用正则expression式时,默认情况下,在Eclipse中search是多行的:

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

我想添加“私人string描述”

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

取而代之:

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

它在由CTRLH触发的文件search中完美地工作。

Eclipse多行搜索

正如Tika的回答中所提到的,您可以直接复制在“包含文本”字段中select的两行 :这些行将被Eclipse 转换为您的正则expression式

关于如何获得选定块的正则expression式的另一个技巧。 打开一个包含多行(多行)的文件来search或replace。 点击Ctrl + F并select“正则expression式”。 closures查找/replace窗口。 select您需要的块,然后再次单击Ctrl + F打开查找/replace窗口。 现在,在“查找”文本框中,您有与您的select块完全匹配的正则expression式。

(我发现这一点,只有手动创build一个正则expression式很长的块:)

如果你使用正则expression式,CTRL + H会占用两行(你不必自己编写正则expression式,日食就是这么做的)。

  1. select你的线路。
  2. 点击CTRL + H。 search对话框打开。 如果“正则expression式”已经被选中,eclipse会将你search的两行代码转换为正则expression式,点击search。 如果“正则expression式”,如果还没有选中“,检查它并点击取消(日食记得你的select)。
  3. 再次select你的线。
  4. 点击CTRL + H。 search对话框打开。 这次“正则expression式”已被选中。 eclipse会将你search的两行代码转换为正则expression式,点击Search。

将多行作为手动构build的正则expression式的一部分的快速提示:

您通常会使用.*来匹配任何字符零次或多次,而不是考虑使用(?:.|\r?\n)* 。 或者加一个额外的? 最终使其不贪婪。

说明. 不匹配新行,所以需要做一个“或 – ”:括号匹配或者. 之后的pipe道或新的线路。 这个? \r使回车符之前的回车符可选,以允许Windows或Unix新行。 ?:将整个事物排除在捕获组之外(这有助于避免堆栈溢出)。

select包含所有文件的文件夹,然后按Ctrl + H。