当前位置: 首页 > 知识库问答 >
问题:

用Java正则表达式代替系统。出来println图案

谢选
2023-03-14

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

例如:

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

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

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

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

共有1个答案

杜联
2023-03-14

我建议

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

其中[^)] 将扫描到最后一个括号。但是,这将在多种情况下失败:

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

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

 类似资料:
  • 问题内容: 我正在尝试以的形式找到网页上的所有链接,或者我做了一个正则表达式,并且可以正常工作: 但是,有没有更短的写方法呢?我重复了:// [^ / \“] + /两次,可能没有必要。我尝试了各种方法,但是没有用。我尝试了: 很明显,我在这里缺少了一些东西,或者我只是对Python正则表达式不够了解。 问题答案: 您正在使用捕获组,并在使用捕获组时改变其行为(它只会返回捕获组的内容)。您的正则表

  • 问题内容: 最近,我不得不搜索许多字符串值,以查看哪个字符串与某种模式匹配。在用户输入搜索词之前,字符串值的数量和模式本身都不清楚。问题是,我的应用程序每次运行以下行时,我都已注意到: 大约需要40微秒。不用说,当字符串值的数量超过几千个时,它会太慢。 该模式类似于: 这里的A〜F只是示例,但是模式类似于上面的东西。 请注意 模式实际上每次搜索都会改变。例如,“ A * B * C ”可以更改为W

  • 问题内容: 我有这个字符串: 现在,我想在每个数字之前添加String num:。 因此结果必须是: 这也必须工作: 用于搜索数字的正则表达式是:[0-9]+ 但是我想用num:+ [匹配的子字符串]替换匹配的子字符串。 我现在写了一个带有数字的示例,但另一个示例可以是:在每个电子邮件地址之前添加 ·Email found·: 问题答案: 利用分组。您可以使用括号(并)定义组,并通过组索引$n在哪

  • 最近,我不得不搜索许多字符串值,以查看哪一个匹配某个模式。在用户输入搜索项之前,字符串值的数量和模式本身都不清楚。问题是,每次我的应用程序运行以下行时,我都会注意到:

  • 我需要为一个设计糟糕的旧应用程序编写JUnit测试,该应用程序正在向标准输出写入大量错误消息。当方法正确运行时,它将返回一个XML响应: 但当它得到格式错误的XML或不理解请求时,它会返回,并将一些内容写入标准输出。 在JUnit中是否有任何方法断言控制台输出?要捕获以下情况:

  • 问题内容: 我需要替换字符串的一部分。我浏览了Python文档并发现了re.sub。 我期望这能打印,而不是“酒吧”。 谁能告诉我我做错了什么? 问题答案: 除了捕获要 替换 的零件外,您还可以捕获要 保留 的零件,然后使用引用对其进行引用以将它们包括在替换字符串中。 尝试以下方法: 另外,假设这是HTML,则应考虑使用HTML解析器来执行此任务,例如Beautiful Soup 。