* 貪心、懶惰和占有
量詞自身是貪心的。貪心的量詞會首先匹配整個字串。嘗試匹配時,他會選定盡可能多的內容,也就是整個
輸入。量詞首次嘗試匹配整個字串,如果失敗則回退乙個字元後再次嘗試。這個過程叫回溯。他會每次回退乙個字元,直到找到匹配的內容或者沒有字元可嘗試為止。此外,他還記錄所有的行為,因此相較另兩種方式他對資源的消耗最大。他先吃盡所有的字元,然後每次吐出來一點,慢慢咀嚼消化。
懶惰的量詞則使用另一種策略。他從目標的起始位置開始嘗試尋找匹配,每次檢查字串的乙個字元,尋找他
匹配的內容。最後,他會嘗試匹配整個字串。要是乙個量詞成為懶惰的,必須在普通量詞後新增乙個問號
(?)。他每次只吃一點。
占有量詞會覆蓋整個目標然後嘗試尋找匹配內容,但他只嘗試一次,不會回溯。占有量詞就是在普通量詞之後新增乙個加號(+)。他不咀嚼而是直接吞嚥,然後才想知道吃的是什麼。
* 用*、+和?進行匹配
?:零個或乙個
+:乙個或多個
*:零個或多個
* 匹配特定次數
使用花括號可以限制某個模式在某個範圍內匹配的次數,未經修飾的量詞就是貪心量詞。
範圍語法總結:
: 精確匹配n次
:匹配n次或更多次
:匹配m至n次
:匹配零次或一次(與?相同)
:匹配一次或更多次(與+相同)
:匹配零次或更多次(與*相同)
* 懶惰量詞
?? 懶惰匹配零次或一次
+? 懶惰匹配一次或多次
*? 懶惰匹配零次或多次
? 懶惰匹配n次
? 懶惰匹配n次或多次
? 懶惰匹配m至n次
* 占有量詞
?+ 占有式匹配零次或一次
++ 占有式匹配 一次或多次
*+ 占有式匹配零次或多次
+ 占有式匹配n次
+ 占有式匹配n次或更多次
+ 占有式匹配匹配m至n次
占有匹配沒有回溯,他一下就選定了所有的輸入,不再匯過來檢視。
正規表示式量詞
量詞什麼是量詞 出現的次數 至少出現n次,最多出現m次 例子 查詢qq號 常用量詞 至少n次 任意次 零次或一次 一次或任意次 正好n次 var oinput document.getelementsbytagname input 1 9 qq號第一位為1 9之間的數字 在正則的最開始位置,就代表起...
正規表示式的量詞
量詞,顧名思義,計算數量的詞,三個人,三,就是量詞。那麼,先把正規表示式的量詞供出來 共有 表示原子恰好出現n次。表示原子最少出現n次。最少出現n次,最多出現m次。再來供一段奇葩的亂碼 韓寒三重門1s3 郭敬明小時代1fdss 韓寒後會無期郭敬明小時代2sdf sbusbffsb 方方韓韓 方方方韓...
正規表示式中的量詞
自我感覺量詞是正規表示式裡最不容易理解的地方,所以特別為它做了個總結。為了容易理解,會簡單地結合正規表示式引擎的工作方式來講。正規表示式引擎分為文字導向型 text directed engines 和正規表示式導向型 regex directed engines 兩種。因為基本上採用的是正規表示式...