搞懂正则表达式之进阶篇
在上一篇博文里我們學習了基礎的正則表達式,學會這些還不足以應對工作學習,現在開始學習進階篇的正則表達式。
目錄
1.分組
2.或者
3.分組回溯
4.先行斷言
5.后行斷言
1.分組
?在正則表達式中提供了一種將表達式分組的機制,當使用分組時,除了獲得整個匹配。還能夠在匹配中選擇每一個分組。分組的一個重要功能就是捕獲數據,即將需要的數據在字符串中提取出來。使用()即可完成分組的操作。
如果我們僅想將字符分組卻不捕獲字符可以使用(?: 表達式)來實現
分組的實踐:如下,我們需要將日期中的數字部分提取出來,可使用以下表達式
在上式中,\d{4}表示匹配4個數字,[-,/\s?]表示字符出現0或1次,\d{1,2}表示數字出現1或2次。
2.或者
? 有時我們想要提取的不是單一種類的字符而是多個字符,這是就可以使用或者|來實現
3.分組回溯
在分組中我們可以定義一個分組,這個分組在以后出現時可以直接用數字代替使用,使用\N可以引用編號為N的分組,注意分組與其子分組是同一個而不是同一類。
4.先行斷言
先行斷言可以分為兩種:正向先行斷言、反向先行斷言
正向先行斷言:(?=表達式),指在某個位置向右看,表示所在位置右側必須能匹配表達式
在上圖中我們需要的是喜歡你中的喜歡二字,即喜歡后必須有你才可。
反向先行斷言:(?!表達式),作用是保證右邊不能出現某字符。
上圖中就是喜歡后面不能有你。
5.后行斷言
后行斷言與先行斷言正好相反:先行斷言從左往右看,后行斷言從右往左看。
正向后行斷言:(?<=表達式),指在某個位置向左看,表示所在位置左側必須能匹配表達式
上圖使用了正向先行斷言以及正向后行斷言,實現的功能是喜歡二字前有我,后有你。
反向后行斷言:(?<!表達式),指在某個位置向左看,表示所在位置左側不能匹配表達式
上圖使用了反向先行斷言以及反向后行斷言,實現的功能是喜歡二字前沒有我,后沒有你。
到此為止,正則表達式已經基本結束了,這篇博文就當作日后學習的筆記吧。
?
總結
以上是生活随笔為你收集整理的搞懂正则表达式之进阶篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网日报 | 7月19日 星期一 |
- 下一篇: 2021快手电商数据报告