正則表達式-量詞
1概述
所謂量詞,能夠理解爲用來描述某個字符(字符組)重複出現的次數。舉個例子,11位數的電話號碼,若是不考慮前三位的固定組合,用正則表達式寫成:
\d\d\d\d\d\d\d\d\d\d\d
其中d重複了11次,十分不方便,因此就引入了量詞,上式能夠輕鬆地寫成:
\d{11}
量詞也支持對長度描述範圍,形如{m,n} m和n分別是兩個整數,至關於數學中的[m,n],例如\d{1,11},表示這個數字字符串的長度最短1個字符,最長11個字符。java
【注意】{m,n}的n省略寫成{m,} 表示字符出現最少m次,且沒有上限。
2 經常使用量詞表示
有幾種技術人員經常使用的量詞表示,產生出了至關於量詞的簡記策略。
3 點號
特殊的元字符 .(點號),點號能夠匹配除了換行符n以外的全部字符,包括數字、字母各類符號等。若是須要匹配真正的全部字符的話,能夠在設置單行模式匹配的狀況下使用點號,或者使用第一章所講,使用 [\s\S]。正則表達式
4 匹配優先量詞
正則表達式中的量詞能夠分爲幾種類別,以前介紹的量詞都是能夠歸爲匹配優先量詞,其匹配策略爲:當不肯定是否要匹配時,先嚐試匹配,再作後續動做。
由於有匹配優先的存在,對於通配符(除\n)點號就有可能匹配到本不應匹配到的部分(好比字符串的末尾),這時候就應該放棄本次匹配,讓表達式的後一部分嘗試匹配。這一個過程稱爲回溯。ide
5忽略優先量詞
相反地,當不肯定時候要匹配時選擇不匹配的稱爲忽略優先量詞。先嚐試用表達式後面的部分匹配,不符合時再作回溯操做。
上面提到的經常使用量詞都是優先匹配的,它們都有忽略優先的對應量詞,見下表:
【注意】對於忽略優先量詞的轉義包括先後兩部分,即?的轉義爲\\? ,+?的轉義爲+\? ,??的轉義爲\?\?
喜歡這樣文章的能夠關注我,我會持續更新,大家的關注是我更新的動力!須要更多java學習資料的也能夠私信我!學習