正则断言用来匹配某个表达式前面或者后面必须要有什么,或者必须没有什么,但是这些字符是不会被匹配出来(这就是零宽度),例如,字符串’abc 我们要求abc字符前面必须要有一个’,但是匹配结果中是abc,不能包含这个’号的,就叫正向零宽度断言,基于此有以下断言方式
1、 正向零宽度先行断言
描述:紧挨着需要匹配的字符后面必须有表达式exp匹配的字符
表达式:(?=exp)
举例:
说明:由于hello后面要求必须要有一个world,故第一行的hello可以匹配成功,而第二行的hello由于后面不是world则不会被匹配成功
2、 正向零宽度回顾后断言
描述:要求要紧挨着匹配字符的前面必须要有符合表达式exp的字符
表达式:(?<=exp)
举例:
说明:这个要求world单词的前面必须要有一个hello的单词,否则则算是匹配失败,在这里面匹配到了第一行的world,而第二行的world则会匹配失败
3、 负向零宽度先行断言
描述:紧挨着需要匹配结果的后面不允许出现符合exp表达式的内容
表达式:(?!exp)
举例:
说明:紧挨着hello后面不允许出现world单词,所以第一行未能匹配
4、 负向零宽度回顾后断言
描述:紧挨着在需要匹配的结果前不允许出现符合 exp表达式的内容
表达式:(?<!exp)
举例:
说明:由于第一行的world之前有hello,故第一行未能匹配得到,第二行得以匹配