正则表达式之我见—零宽断言 与 负向零宽断言
零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西。
分类 | 代码/语法 | 说明 |
---|---|---|
零宽断言 | (?=exp) | 匹配exp前面的位置 |
(?<=exp) | 匹配exp后面的位置 | |
负向零宽断言 | (?!exp) | 匹配后面跟的不是exp的位置 |
(?<!exp) | 匹配前面不是exp的位置 |
1.1 (?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。
此处匹配以a结尾的字符串除a以外的其它部分字符内容,如1.1图结果所示。
1.2(?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。
此处匹配以b开头的字符串除b以外的其它部分字符内容,如1.2图所示。
1.3(?!exp)也叫零宽度负预测先行断言,它断言此位置的后面不能匹配表达式exp。
此处结果一目了然,原来正则也有一颗热爱avi的心!此处条件是不匹配abc的字符串。
1.4(?<!exp)也叫零宽度负回顾后发断言,它断言此位置的前面不能匹配表达式exp。
此处匹配不以小写字母开头的7位字符串,唯独小写a开头的没有匹配到。这里需要说明一下的是A开头的,结果没有A是因为结果匹配的是7个1,此处只是允许A开头。