我研究了一段时间,但令人惊讶的是,我发现没有一种方法或regular expressions
正常工作。
我需要一种从源代码文件中删除所有类型的单行和多行注释的方法。
各种regular expressions
,例如
sourceCode.replaceAll("(/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/|[ \\t]*//.*)", "");
我尝试过导致异常:
Exception in thread "main" java.lang.StackOverflowError
然后我也找到了this one之类的解决方案,这些解决方案运行良好,但在处理后的源代码中仍然有一些评论字符不会发生。
另一种方法,例如this one几乎完美无缺,但它失败了/*// Hi */
形式的注释,完全忽略了这些块。
我确实从我试过的每个正则表达式得到了不同的结果。请告诉我如何可靠地完成这项任务。
答案 0 :(得分:2)
以下是my answer on JavaScript comment removal的简化版本:
替换:
(?m)((["'])(?:\\.|.)*?\2)|//.*?$|/\*[\s\S]*?\*/
$1
。
我链接的答案详细解释了这种模式的工作原理。这个更简单的原因是因为Java在语言语法中没有正则表达式文字。那些真正替代讨厌的。