溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中怎么優(yōu)化正則表達式

發(fā)布時間:2021-08-11 15:29:13 來源:億速云 閱讀:143 作者:Leah 欄目:編程語言

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)Java中怎么優(yōu)化正則表達式,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

獲取每次使用引起小損失的分組。如果你實際并不需要獲取一個分組內(nèi)的文本,那么就使用非捕獲分組。例如使用“(?:X)”代替“(X)”。

讓引擎完成優(yōu)化(Let the engine do the work for you)

如上面我所提到的,java.util.regex包可以編JAVA譯正則表達式時對其優(yōu)化。例如,正則表達式中包含了一個必須在輸入字符串中出現(xiàn)的字符串(或者整個表達式都不匹配),引擎有時會首先搜索該字符串,如果沒有找到匹配就會報告失敗,不再檢查整個正則表達式。

另外非常有用地自動優(yōu)化正則表達式的方式讓引擎根據(jù)正則表達式中的期望長度檢查輸入字符串的長度。例如,表達式“\d{100}”是內(nèi)在優(yōu)化的,以致于如果輸入字符串不是JAVA100個字符,引擎就會報告失敗,而不再考察整個正則表達式。

無論何時編寫復(fù)雜的正則表達式時,嘗試找出一種編寫方式使引擎可以識別和優(yōu)化這些特殊情況。例如,不要在分組或選擇中隱藏命令字符串,因為引擎不會識別它們。若有可能,指定你想要匹JAVA配的輸入字符串的長度也是相當有用的,如上例所示。

優(yōu)化貪婪模式和勉強模式(Optimizing greedy and reluctant quantifiers)

你已經(jīng)有了如何優(yōu)化正則表達式的基本概念,其中一些方式可以JAVA讓引擎來完成優(yōu)化?,F(xiàn)在我們討論優(yōu)化貪婪模式和勉強模式。貪婪模式量詞如“*”或“+”,會首先從輸入字符串中嘗試匹配盡可能多的字符,即使這意味著字符串中的剩下的內(nèi)容已經(jīng)不足以匹配正則表達式的其余部分。如果是這樣,貪婪模式量詞就會回縮,返回字符,知道可以完全匹配或者沒有字符了。勉強(或者lazy)模式,另一方面,會首先嘗試匹配輸入字符串中盡可能少的字符。

上述就是小編為大家分享的Java中怎么優(yōu)化正則表達式了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI