java - Eclipse:同时替换多个不同的正则表达式

标签 java regex eclipse replace

我目前正在尝试用一个不同但相似的测试框架替换旧的(java)测试框架。因此,由于旧框架代码的大多数出现在 90% 的情况下都是相同的(在相同的变量名称、参数类型等意义上),因此替换它们非常简单且相当重复。

因此,我给自己写了一些正则表达式匹配(它们工作得很好,它们不是这个问题的焦点)。

但是,我有相当多的不同测试文件,并且此时我已经(刚刚开始)有 6 个不同的匹配/替换对,我想应用它们。
现在显然,作为一名计算机科学家,我希望将其自动化,而不是遍历每个文件,按 Ctrl+F,粘贴匹配的正则表达式,粘贴替换的正则表达式,按替换按钮,再重复此循环 5 次,然后然后移动到下一个文件。

所以,为了简单起见,我们假设这些是我的正则表达式:

//matches the existing framework
OldClass (.*?) = new OldClass("string");
//replacement regex:
NewClass $1 = new NewClass("string");

//example replacement:
OldClass foo = new OldClass("string");
//becomes:
NewClass foo = new NewClass("string");

那么,如果我想在许多不同的文件中替换几个匹配/替换对 - 我可以使用任何内置的 Eclipse 函数,还是有提供此功能的扩展?

请注意,我知道我可以编写一个简单的 java 程序,该程序只需浏览所有源代码并根据需要应用正则表达式。
不过,我宁愿避免花费这些时间,而且特别希望有机会将它们单独应用于每个文件,这样我就可以在之后重新运行测试并确保没有任何问题 - 这将 发生这种情况是因为由于过于复杂和具体的情况,并非所有旧框架代码都可以自动替换。不过,由于我还要删除旧的导入,因此这将破坏依赖于现在不再存在的导入的任何仍然存在的未替换代码。

最佳答案

Eclipse 应该有一个简单的文件搜索选项,底部有一个“替换..”按钮。您可以像通常指定要搜索的文件结尾一样进行搜索(在本例中您可能需要 *.java)。通过替换按钮,您可以使用正则表达式将每个搜索结果替换为替换结果。

当然,这会一次更换一个源,我知道这很尴尬,但我的建议是执行小步骤,最大限度地减少代码损坏的时间。例如,如果您将类移动到具有新名称的新位置,只需首先专注于重命名该类(然后验证代码是否可以工作),然后仅然后专注于更改其包。

明智的做法是,先点击“预览”!

或者,考虑使用 ctrl+shift+R 重命名方法/变量/类。假设代码位于源文件夹下,它将自动重命名所有使用它的地方。一般来说,它比使用正则表达式更可取。但同样,您不能同时执行多项更改。尽管这可能是最好的。只需对项目进行备份并在开始之前组织需要进行的更改即可。

祝你好运!

关于java - Eclipse:同时替换多个不同的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48225336/

相关文章:

java - 如何创建饼图并在 html 报告中呈现

java - 如何将多个接口(interface)分组为一个通用的单个接口(interface)?

php - 用于提取(奥地利)街道门牌号/楼梯/楼层/门的正则表达式

java - 复杂字符串的正则表达式

java - 在 Eclipse 新 Java 类向导中看不到父类(super class)

java - 发送前打印 URLConnection 请求

java - Metro & StreamBuffer 命名空间错误——我理解正确吗?

php - 在 PHP 中拆分文本

java - resharper 是否向 VS 添加了 Eclipse 没有的任何类型的代码重构?

android - 在没有eclipse的情况下安装Android模拟器