簡體   English   中英

Java RegEx Pattern花費了太多時間

[英]Java RegEx Pattern takes too much time

我有一個腳本(Java String),它包含許多SQL和SQL運算符,如<>(不等於),++(增量運算符),:=(賦值運算符)但默認情況下它們都包含單個或多個空格在它們之間,例如<>將是<>,類似地,++可能像+ +,它們之間有多個空格。

我寫了一個簡單的RegEx來刪除下面提到的空格。 對於小腳本,沒有問題,但對於較大的腳本,它需要很多時間,有時需要20-30秒。

你能看到這個程序有什么問題並建議我更好的東西嗎?

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

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

請建議我如何減少時間。

謝謝

您是否嘗試過使用String.replace(CharSequence, CharSequence)

我擔心與工會的長期正面關系在匹配器上有點難。 為什么不是這樣一個更簡單的解決方案:

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

它會更清晰,應該更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM