零宽断言的概念可以参考之前的博文
零宽断言之所以叫零宽,是因为它不消耗字符的通俗的讲,它不匹配字符串而是匹配一个位置。比如对于字符串
abcdefg在正则表达式看来,是下面这个样子的
p1,p2等代表位置,因此8个长度的字符串有9个位置零宽断言就匹配这些位置。
正负只是表示相等还是不相等
如果使用零宽断言的话,就可以解决这个问题
那么比如匹配不包含字符串ab的行写法就应该如下:
先写下(?!ab),意思是匹配一个位置,该位置后面沒有ab然后写出(?!ab).,意思就是该位置后面可以跟任何一个字符(除了ab)但这个正则表达式只匹配单个字符,因此该模式匹配某个位置后的單个字符该字符是a且后面是b,则该字符就得不到匹配因此对于多个字符只要把该字符分组捕获后加上*即可,因此最终的正则表达式为
洳果匹配不包含ab的某一行的话
本文转自cnnCTO博客原文链接: /cnn3376,如需转载请自行联系原作者