色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 正則表達式 貪婪

周雨萌1年前6瀏覽0評論

JavaScript正則表達式是一種強大的模式匹配工具,可以幫助我們在字符串中匹配一些特定的字符和模式。其中有一種重要的概念是貪婪,指的是正則表達式默認(rèn)會盡可能地獲取滿足條件的最大長度。

舉個例子,我們有一個字符串:“hello world! welcome to javascript”,現(xiàn)在我們想匹配其中的“wor”和“wel”這兩個單詞,我們可以這樣寫正則表達式:

/h[ae]llo wo?rld! wel?come/

這個正則表達式可以匹配這個字符串中的“wor”和“wel”,其中?表示上一個字符可選,這樣可以匹配“wo”和“wel”兩種情況。但是這個正則表達式會優(yōu)先匹配滿足最大長度的子串,比如“hello world! welcome to javascript”中的“el”和“ript”。

如果我們希望正則表達式只對最短的子串進行匹配,可以使用非貪婪模式,即在匹配的字符后面加上?問號。比如我們可以這樣寫正則表達式:

/h[ae]llo wo??rld! wel??come/

這個正則表達式使用了非貪婪模式,可以確保匹配的是最短的子串,這樣就可以匹配“wor”和“wel”了。

除了在字符后面使用?問號,還可以使用其他的量詞符來控制貪婪程度。比如*表示零個或多個,+表示一個或多個,{n,m}表示n到m個等等。使用這些量詞符可以靈活地控制正則表達式的匹配程度。

舉個例子,我們有一個字符串:“ababababa”,現(xiàn)在我們想匹配其中的“aba”這個子串,我們可以這樣寫正則表達式:

/aba+/

這個正則表達式使用了+號量詞符,表示至少一個“a”字符,可以匹配單個的“aba”、“ababa”、“abababa”等子串,但是會優(yōu)先匹配長度更長的子串,比如“abababa”中的“ababa”和“ababab”。

如果我們希望匹配最短的子串,可以使用非貪婪模式,即在量詞符后面加上?問號。比如我們可以這樣寫正則表達式:

/aba+?/

這個正則表達式使用了非貪婪模式,可以確保匹配的是最短的子串,這樣就可以匹配“aba”了。

總之,正則表達式中的貪婪是默認(rèn)行為,可以使用非貪婪模式和量詞符來控制匹配程度,從而達到我們想要的效果。