自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談Java中正則表達(dá)式的優(yōu)化方法

開發(fā) 后端
本文主要講述Java中的正則表達(dá)式優(yōu)化方法。

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

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

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

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

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

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

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

【編輯推薦】

  1. Java EE開發(fā)三劍客現(xiàn)狀及發(fā)展淺析
  2. Java多線程程序設(shè)計(jì)初步
  3. Java中跳出多層循環(huán)的簡單方法
責(zé)任編輯:楊鵬飛 來源: jisuanji009的空間
相關(guān)推薦

2019-07-17 15:45:47

正則表達(dá)式字符串前端

2010-03-25 18:25:36

Python正則表達(dá)式

2018-09-27 15:25:08

正則表達(dá)式前端

2011-08-16 16:40:06

iPhone應(yīng)用正則表達(dá)式OgreKit

2019-12-17 17:01:02

MySQLSQL數(shù)據(jù)庫

2021-05-25 09:18:04

正則表達(dá)式Linux字符串

2009-02-18 09:48:20

正則表達(dá)式Java教程

2010-08-09 09:29:26

Flex程序設(shè)計(jì)

2020-09-04 09:16:04

Python正則表達(dá)式虛擬機(jī)

2016-11-10 16:21:22

Java 正則表達(dá)式

2019-09-24 09:29:26

Python數(shù)據(jù)接口

2019-05-21 10:42:41

Python正則表達(dá)式

2024-09-14 09:18:14

Python正則表達(dá)式

2011-07-11 12:33:30

JAVA

2009-06-09 09:16:52

Java正則表達(dá)式

2009-06-25 17:37:43

Java正則表達(dá)式

2021-01-27 11:34:19

Python正則表達(dá)式字符串

2009-09-16 18:19:34

正則表達(dá)式組

2011-06-02 12:34:16

正則表達(dá)式

2017-05-12 10:47:45

Linux正則表達(dá)式程序基礎(chǔ)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號