我的程序遇到了一个小问题。它似乎冻结了,很可能是由 while 循环引起的。
我想要做的是拿起并替换 Java 注释。因此,在输入块评论时,您将使用/*
. 如果没有结束 ( */
) 程序需要 5-6 秒才能冻结并且您无法使用它。我已经用更多的正则表达式和一个超过 10,000 行的文件运行了这个,没有性能问题,所以任何类型的性能下降都是令人震惊的,但只有 5 秒的延迟。
private static final String COMMENT_MATCHER = "(//.*)|(/\\u002A((\\s)|(.))*?\\u002A/)";
private String clearMatches(String code, final String regex) {
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(code);
while (matcher.find()) {
final String match = matcher.group();
code = code.replace(match, CharBuffer.allocate(match.length()).toString());
}
return code;
}
我猜问题在于它找到了许多匹配项并遍历所有匹配项,因为有一个杂散的星号。
问候,奥比塞雷。