Java正则表达式替换System.out.println模式

时间:2013-05-17 10:18:14

标签: java regex

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

例如:

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

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

System.out.println*

但如果代码是这样的话:

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

这就是问题所在。任何人都可以建议我如何使用java正则表达式替换它。

1 个答案:

答案 0 :(得分:0)

我建议

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

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

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

加倍努力,使用Eclipse's in-built parser(了解词汇问题,注释,并可以标记对System.out的任何编译时引用)。