1. 前瞻:?=
exp1(?=exp2):查找exp2前面的exp1 例如:博客园 顾客 博客 客园 表达式:客(?=园) 结果:客 客 例如:23a 表达式:\d+(?=.*[a-z]) 结果:23
2.后顾:?<=
(?<=exp2)exp1:查找exp2后面的exp1 例如:博客园 顾客 博客 客园 表达式:(?<=博)客 结果:客 客 例如:中国a23 表达式:(?<=.*[a-z])\d+ 结果:23
3.负前瞻: ?!
exp1(?!exp2):查找前面不是exp2的exp1 例如:博客园 顾客 博客园 客园 表达式:客(?!园) 结果:客
4. 负后顾:?<!
(?<!exp2)exp1 查找后面不是exp2的exp1 例如:博客园 顾客 博客 博客园 表达式:(?<!博)客 结果:客
5. \s+
一个或多个空格
6.^
以xxx 开始
7.[^ ]
不包含xxx;匹配未包含的任意字符 例如:plain 表达式:[^abc] 结果: plin
8. .*
. 匹配除缓缓\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