负向零宽断言:
(?!exp) 零宽度负预测先行断言; 匹配后面不是exp的位置
(?<!exp) 零宽度负回顾后发断言; 匹配前面不是exp的位置
代码示例1:
exp:abZW863ab88; 正则:ab(?![A-Z])
图示:
思考:该正则规则会匹配到该exp哪些结果?是ab还是ab88亦或是ab ab88呢?
分析:首先正则中a来获取控制权,接着开始从第0号位置去匹配。exp中的a是0-1位置,恰好匹配成功,控制权转到正则的b中。此时b会去从第一号位置匹配。exp中的b是1-2位置,恰好匹配成功,接着将控制权转给正则的(?![A-Z])中。此时(?![A-Z])会去匹配第二位置,但是它要求第二位置后面不能是A-Z,那么匹配位置失败,接着将控制权重新发送回正则的a中。...接着到了第7号位置,正则a匹配exp的a成功...最后到了第九号位置,控制权此时是(?![A-Z])。(?![A-Z])开始从第九号位置去匹配,发现8不是A-Z,那么匹配成功,注意:断言匹配的内容不会具有真实性,换句话说断言匹配到这里的8后,发现匹配成功了,那么