环视就是要求匹配部分的前面或后面要满足(或不满足)某种规则,有些地方(例如java)也称环视为
    零宽断言
    举个会用到环视例子,邮政编码的规则是第一位是 1-9,一共有 6 位数字组成。现在要求提取文本中的
    邮政编码。
    根据规则,我们很容易就可以写出邮编的组成 [1-9]\d{5}。然后测试下面的文本:

    1. 012300 不满足第一位是
    2. 1-9 130400 满足要求
    3. 465441 满足要求
    4. 4654000 长度过长
    5. 138001380002 长度过长

    image.png
    结果,7 位数的前 6 位也能匹配上,12 位数匹配上了两次,这显然是不符合要求的。
    环视的规则可能难以记住,我们可以总结一下:左尖括号代表看左边,没有尖括号看右边,感叹号是非
    的意思。
    我们可以通过环视限定左边不是数字,右边也不是数字的开头不是0的 6 位数:(?<!\d)[1-9]\d{5}(?!\d)
    image.png
    环视也可以实现单词边界一样的作用:\b\w+\b 也可以写成 (?<!\w)\w+(?!\w)
    表示左右两边都不能是单词。
    注意:环视虽然有括号但与非捕获组一样,不会产生子组。