Python正則表達式語法補充
補充兩個初學時容易遺漏,但是對於實際應用Regex特別重要的知識點。
.* :匹配任意字元的任意次(可用於過濾掉無關的文字)
?:非貪婪匹配
下面看幾個Demo:
結果:
boooooobbbby123
bb
結果:
boooooobby123
boooooobb
結果:
boooooobby123
boooooob
結果和貪婪演算法有關,貪婪演算法同時從兩個方向(左,右)看匹配結果
取消貪婪的方式,匹配到第一個b就返回:
結果:
boooooobbbby123
boooooob
結果:
boooooobbbby123
boooooobbbb
結果:boooooobbbby123
貪婪的思想:把滿足匹配條件的字元串逐個都匹配一遍,返回最後一次匹配的結果
舉例:
結果:bbb (因為最後一個滿足條件的字元串是bbb)
結果:bab (因為最後一個滿足條件的字元串是bab,前一個滿足條件的字元串是bbb)
中括弧[ ]三大用途:
1.表示』或』關係,滿足其中條件之一就能匹配成功
2.定義區間[0-9] ,{ }:定義出現次數, 比如:\d{1,2} 出現1~2個數字,可以匹配日期中的月份,如』06』和』6』
3.取消特殊含義的字元(小數點等)代表的意義,比如[. ]中的小數點,不再代表匹配任意字元,除了換行符,
而代表單純的小數點(可以用代碼驗證一下)
提取漢字:[一-龥]
結果:京大學
出現上面結果的原因:受到了貪婪匹配的影響,匹配的第一個結果是南,第二個結果是京,
返回最後一個結果京,在條件的前面加一個?,取消貪婪
結果:南京大學
TAG:千鋒JAVA開發學院 |