全網最易懂的正則表達式教程(7)- 環視


正則詳細教程系列可以看此鏈接的文章哦

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 寫不香嗎

 

環視與分組

  • 環視和分組都有 ( ) 
  • 但環視只匹配位置,不匹配文本內容
  • 而分組是為了將匹配到的文本內容用於后續的操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM