正则表达式运行非常缓慢

时间:2019-06-28 08:20:05

标签: java regex

我正尝试使用正则表达式替换查询中的模式,如下所示:

final Pattern CONCATE_NUMS_RIGHT_PATTERN = Pattern.compile("(\\S+)\\s*\\|\\|\\s*(\\d+)");

String query=getQuery(); // some 500-600 line String

final Matcher matcher = CONCATE_NUMS_RIGHT_PATTERN .matcher(query);

query = matcher.replaceAll("$1 + $2");

我要做的就是只要正确的操作数是数字,就用 + 替换 ||

尽管这很好,但较长的查询却要花很长时间。

  1. 这是因为灾难性的回溯吗?如果是,它如何工作?
  2. 我如何使其快速运行?

0 个答案:

没有答案