3

我们正在开发一个 Eclipse 插件工具来从工作区项目中删除 sysout 语句。我们只能部分实现我们的目标。如果系统输出在一行中,我们可以轻松删除它。但是如果 sysout 跨越几行(通常由于代码格式化而发生),这就是我们面临问题的时候。

例如 :

System.out.println("Hello World");

删除此行的正则表达式很简单:

System.out.println*

但如果代码是这样的:

System.out.println(New Line)("HelloWorld");

这就是问题所在。谁能建议我如何使用java正则表达式替换它。

4

1 回答 1

0

我建议

String regex = "System\.out\.println[^)]+[)]\s*;"

[^)]+将扫描到右括号的位置。但是,这将在多种情况下失败:

  • (可能是不平衡的)输出中的括号
  • 注释掉的代码
  • 可以省略“;”的少数情况
  • System.out 分配给另一个变量而不是直接使用的情况

加倍努力并使用Eclipse 的内置解析器(它可以理解词法问题、注释,并且可以标记对 System.out 的任何编译时引用)。

于 2013-05-17T10:34:43.427 回答