删除所有多行注释

时间:2016-02-10 19:35:58

标签: java regex comments

我研究了一段时间,但令人惊讶的是,我发现没有一种方法或regular expressions正常工作。

我需要一种从源代码文件中删除所有类型的单行和多行注释的方法。

各种regular expressions,例如

sourceCode.replaceAll("(/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/|[ \\t]*//.*)", "");

我尝试过导致异常:

Exception in thread "main" java.lang.StackOverflowError

然后我也找到了this one之类的解决方案,这些解决方案运行良好,但在处理后的源代码中仍然有一些评论字符不会发生。

另一种方法,例如this one几乎完美无缺,但它失败了/*// Hi */形式的注释,完全忽略了这些块。

我确实从我试过的每个正则表达式得到了不同的结果。请告诉我如何可靠地完成这项任务。

1 个答案:

答案 0 :(得分:2)

以下是my answer on JavaScript comment removal的简化版本:

替换:

(?m)((["'])(?:\\.|.)*?\2)|//.*?$|/\*[\s\S]*?\*/

$1

Demo here

我链接的答案详细解释了这种模式的工作原理。这个更简单的原因是因为Java在语言语法中没有正则表达式文字。那些真正替代讨厌的