StackOverflowError - Java

时间:2014-04-15 21:31:05

标签: java regex stack-overflow

我想从Java代码中删除所有多行注释,我现在使用以下REGEX导致StackOverflowError

String regexMultiLine = "(?<!\"/)(/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+/)";

Exception in thread "main" java.lang.StackOverflowError at java.util.regex.Pattern$GroupHead.match(Pattern.java:4569)

我正在使用上面的REGEX以及以下代码:

content = content.replaceAll(regexMultiLine,"");

我想删除文件中所有注释掉的代码。有些情况"//*不是评论的开头,我不想删除。

如何重新编写此REGEX,以免导致此问题?

1 个答案:

答案 0 :(得分:0)

据推测,你的程序不需要很多总内存(一个源文件不能那么大)。您是否尝试使用-Xss123m增加堆栈大小(其中123可以是您需要的任何值)?假设你的正则表达式工作(你在几个非常简单的测试用例上试过它)并且它只是在一个更大的文件上遇到麻烦,我建议测试一些堆栈大小的增加,看看是否有一个点在其允许它的原因之内完成。