删除所有多行注释
Removing all multi-line comments
我研究了一段时间,但令人惊讶的是 none 的方法或 regular expressions
我发现它们工作正常。
我需要一种从源代码文件中删除各种单行和多行注释的方法。
各种regular expressions
如
sourceCode.replaceAll("(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/|[ \t]*//.*)", "");
我试过导致异常:
Exception in thread "main" java.lang.WhosebugError
然后我还找到了诸如 this one 之类的解决方案,它运行良好,但在处理后的源代码中仍然有一些不应该发生的注释字符。
另一种方法,如 this one 几乎完美地工作,但它以 /*// Hi */
形式的注释失败,并且完全忽略了这些块。
我尝试的每个正则表达式实际上都得到了不同的结果。请让我知道如何可靠地完成这项任务。
这是来自 my answer on JavaScript comment removal 的简化版本:
替换:
(?m)((["'])(?:\.|.)*?)|//.*?$|/\*[\s\S]*?\*/
与
.
我链接到的答案详细解释了这种模式的工作原理。这个更简单的原因是 Java 在语言语法中没有正则表达式文字。这些确实使替代品变得令人讨厌讨厌。
我研究了一段时间,但令人惊讶的是 none 的方法或 regular expressions
我发现它们工作正常。
我需要一种从源代码文件中删除各种单行和多行注释的方法。
各种regular expressions
如
sourceCode.replaceAll("(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/|[ \t]*//.*)", "");
我试过导致异常:
Exception in thread "main" java.lang.WhosebugError
然后我还找到了诸如 this one 之类的解决方案,它运行良好,但在处理后的源代码中仍然有一些不应该发生的注释字符。
另一种方法,如 this one 几乎完美地工作,但它以 /*// Hi */
形式的注释失败,并且完全忽略了这些块。
我尝试的每个正则表达式实际上都得到了不同的结果。请让我知道如何可靠地完成这项任务。
这是来自 my answer on JavaScript comment removal 的简化版本:
替换:
(?m)((["'])(?:\.|.)*?)|//.*?$|/\*[\s\S]*?\*/
与.
我链接到的答案详细解释了这种模式的工作原理。这个更简单的原因是 Java 在语言语法中没有正则表达式文字。这些确实使替代品变得令人讨厌讨厌。