正则的最终目的是匹配,考虑这样一种情况,我们需要将一个字符串从特定的位置进行分割,不过这个位置比较特殊,它不是一个字符,而是某个特定字符串的前面(或者后面)。

那么我们需要使用零宽正向先行(后行)断言。

(?=pattern) :(零宽正向先行断言),pattern 是匹配的字符串,这个正则表达式代表与 pattern 前面的,字符前的“间隙”进行匹配。

(?<=pattern) :(零宽正向后行断言),匹配 pattern 后面的“间隙”。

同样的,我们也可以用类似的语法表示排除某个“间隙”。

(?!pattern) :(零宽负向先行断言)

(?<!pattern) :(零宽负向后行断言)