正則詳細教程系列可以看此鏈接的文章哦
https://www.cnblogs.com/poloyy/category/1796055.html
前言
- 環視:可以理解成看看左邊,再看看右邊
- 在正則中我們有時候也需要瞻前顧后,找准定位
- 環視就是要求匹配部分的前面或后面要滿足(或不滿足)某種規則
- 有些地方也稱環視為零寬斷言
- 環視其實也是斷言的一種方式
什么時候用環視?
通過一個栗子來講解
需求
郵政編碼的規則是第一位是 1-9,一共有 6 位數字組成。現在要求你寫出一個正則,提取文本中的郵政編碼
最朴實的正則
[1-9]\d{5}
測試
| 測試文本 | 結果 |
| 012300 | 不滿足第一位是 1-9 |
| 130400 | 滿足要求 |
| 465441 | 滿足要求 |
| 4654000 | 長度過長 |
| 138001380002 | 長度過長 |

可以發現:
7 位數的前 6 位也能匹配上,12 位數匹配上了兩次,這顯然是不符合要求的,它們並不是正常的郵政編碼
所以,除了 6 位數的規則外,這 6 位數左邊或右邊都不能是數字
環視解決問題

記憶口訣
<看左邊,沒有<看右邊,感嘆號是非的意思
通過環視來寫郵編的正則
(?<!\d)[1-9]\d{5}(?!\d)
這樣就滿足正常郵編的規則了

表示單詞邊界 \b 用環視的方式如何寫?
- (?<!\w) 表示左邊不能是單詞組成字符,
- (?!\w) 右邊不能是單詞組成字符
- 即 \b\w+\b 也可以寫成 (?<!\w)\w+(?!\w)
但並不推薦這樣寫,直接用 \b 寫不香嗎
環視與分組
- 環視和分組都有 ( )
- 但環視只匹配位置,不匹配文本內容
- 而分組是為了將匹配到的文本內容用於后續的操作
