Java RegEx 模式花费太多时间

标签 java regex delay

我有一个脚本(Java String),其中包含很多 SQL 和 SQL 运算符,例如 <>(不等于)、++(增量运算符)、:=(赋值运算符),但默认情况下所有这些都包含单个或者它们之间有多个空格,例如<>将是<>,类似地++可以像++一样,它们之间有多个空格。

我编写了一个简单的正则表达式来删除下面提到的空格。对于小型脚本,没有问题,但对于较大的脚本,需要很长时间,有时需要 20-30 秒。

你能发现这个程序有什么问题并建议我更好的吗?

p = Pattern.compile("(: +=|! +=|- +-|< +>|> +=|< +=|\\+ +=|\\'|\\/ +\\*|\\* +\\/|\\| +\\||\\< +\\<|\\> +\\>)");
m = p.matcher(script);

while (m.find()) {
    script = script.replace(m.group(), m.group().replaceAll(" +", ""));
}

请建议我如何减少时间。

谢谢

最佳答案

我担心带有联合的长正则表达式对匹配器来说有点困难。为什么不采用像这样更简单的解决方案:

str = str.replace(":( +)=", ":=");
str = str.replace("!( +)=", "!=");
str = str.replace("-( +)-", "--");
//... etc

它会更清晰并且应该更快。

关于Java RegEx 模式花费太多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7767590/

相关文章:

java - Jquery 无法在 Eclipse Neon 中工作

Firefox 无法识别 Java 插件

regex - 在 Powershell 中使用函数替换

php - Laravel 5.3 队列作业不工作

javascript - 按键保持延迟。 JavaScript

Android:使用处理程序 post.delayed 两次

java - 用作 Tomcat 7 的 session 管理器时的 Redis 连接异常

java - 用java开发高负载站点

python - 使用正则表达式获取 XML 父标签