1. 前瞻:?=bash
exp1(?=exp2):查找exp2前面的exp1 例如:博客園 顧客 博客 客園 表達式:客(?=園) 結果:客 客 例如:23a 表達式:\d+(?=.*[a-z]) 結果:23
2.後顧:?<=app
(?<=exp2)exp1:查找exp2後面的exp1 例如:博客園 顧客 博客 客園 表達式:(?<=博)客 結果:客 客 例如:中國a23 表達式:(?<=.*[a-z])\d+ 結果:23
3.負前瞻: ?!ide
exp1(?!exp2):查找前面不是exp2的exp1 例如:博客園 顧客 博客園 客園 表達式:客(?!園) 結果:客
4. 負後顧:?<!spa
(?<!exp2)exp1 查找後面不是exp2的exp1 例如:博客園 顧客 博客 博客園 表達式:(?<!博)客 結果:客
5. \s+字符串
一個或多個空格
6.^
博客
以xxx 開始
7.[^ ]it
不包含xxx;匹配未包含的任意字符 例如:plain 表達式:[^abc] 結果: plin
8. .*
class
. 匹配除緩緩\n外的任意單個字符 * 匹配任意數量的任何字符 .* 只要前方有符合.以後表達式,就會一直匹配下去 .*?只要匹配到.以後的表達式一次,就結束
9.捕獲和非捕獲
方法
捕獲:匹配當前exp表達式,獲取併產生Matches 組合。經常使用方法:/(exp)/ 非捕獲:匹配當前exp表達式,不產生新組合,不輸出,不破壞字符串完整性。經常使用方法:/(?:exp)/ 例如:begin 123.456 end 表達式:\d+(?:\.\d+) 輸出: 123.456 例如:/(a)(1)(A)\1\2/g ===> a1Aa1 /(a)(?:1)(A)\1\2/g ====>a1AaA