【发布时间】:2013-05-12 11:31:17
【问题描述】:
我们正在开发一个 Eclipse 插件工具来从工作区项目中删除 sysout 语句。我们只能部分实现我们的目标。如果系统输出在一行中,我们可以轻松删除它。但是如果 sysout 跨越了几行(通常是由于代码格式化而发生的),这就是我们面临的问题。
例如:
System.out.println("Hello World");
删除这一行的正则表达式很简单:
System.out.println*
但是如果代码是这样的:
System.out.println(New Line)("HelloWorld");
这就是问题所在。谁能建议我如何使用 java 正则表达式替换它。
【问题讨论】:
-
如果你正在构建一个 Eclipse 插件,你就可以访问 Java AST,那么为什么还要使用正则表达式呢?
-
您不能使用正则表达式来执行此操作,因为您需要找到相应的右括号(或正确的分号,但这不会容易得多)。您可以查看此问题的答案以获取替代方法stackoverflow.com/questions/546433/…
-
请注意,对于这种情况,'System.out.println*' 不是正确的正则表达式,因为 '.'是任何字符。
-
正如@user2758929 所说,您应该仔细查看现有的API,主要是JDT,但也存在MoDisco 例如