gpt4 book ai didi

java - 如何删除java中的注释行

转载 作者:行者123 更新时间:2023-11-30 10:39:21 24 4
gpt4 key购买 nike

我想删除 java 文件中的注释行。 例如:Java 文件包含以下注释

  1. //这是java
  2. /* 我要删除注释行 */
  3. //我在努力
  4. /* 修订:25 为某些功能添加了此代码 */

我使用下面的正则表达式来删除评论。这将删除所有类型的评论来自 .java 文件。

string.replaceAll("(\\/\\/.*)|(\\/\\*([\\S\\s]+?)\\*\\/)", "");

但我有一些特定的场景,我不想删除所有评论。我可以使用上述模式删除所有注释行(上面提到的 1、2、3 点)。

但我不想删除第 4 点中提到的评论,因为它包含必需的信息。

谁能告诉我需要更改模式才能不删除此类评论?

注意:我知道信息,我不应该删除包含“修订:25”的评论

最佳答案

正如 @markspace 在他的评论中正确提到的那样,您通常无法仅使用正则表达式删除多行注释 /* ... */

这是因为正则表达式描述的是正则文法,而多行/* ... */注释只能通过Context-free grammar来解析基于解析器(因为 /* 总是与 */ 配对,这种公式无法通过常规语法描述 - 它需要堆栈,因此对应于 Pushdown automata ) .此问题类似于 parentheses and square brackets issue.

此外,/* ... */ 可能出现在字符串常量中,因此您还必须区分这些情况,这可能会复杂得多。

这就是为什么要完全解决此任务,您需要编写自己的语法和解析器。出于这些目的,我建议您了解 ANTLR这是为这些东西设计的。

关于java - 如何删除java中的注释行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39318825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com