正则表达式实际操作
文章目錄
- 導入模塊
- search方法
- 作用
- 注意點
- 通配符(元字符)失效
- 匹配任何數字
- 匹配一個IP地址(初學版)
- 字符類
- 例子1:匹配元音字符:
- 注意:
- 表示范圍(-)
- 限定重復匹配次數({})
- 固定次數
- 范圍次數
- 躍躍欲試
- 第一種想法
- 第二種想法
- 正確搞法
- 解釋:
- 匹配一個IP地址(進階版)
- 版本1
- 版本2
導入模塊
首先導入re模塊
import research方法
作用
search方法用于在字符串中搜索正則表達式模式第一次出現的位置。
re.search(r'dog','l like dog')執行結果:
注意點
用find方法實現如下:
'l like dog'.find('dog')執行結果:
但是find方法具有局限性,不能使用通配符(正則表達式中的通配符是 . ,能匹配換行符之外的任何字符)
如下:
re.search(r'.','l like dog')執行結果:
執行結果:
通配符(元字符)失效
那么如果我們想匹配.號呢?也就是讓通配符失效,那該如何進行呢?如下:
re.search(r'\.','l like dog.')執行結果:
加個反斜杠( \ )即可做到
反斜杠后邊跟元字符去除特殊功能,反斜杠后邊跟普通字符實現特殊功能
匹配任何數字
re.search(r'\d','a b c 1 2 3')執行結果:
執行結果:
匹配一個IP地址(初學版)
re.search(r'\d\d\d.\d\d\d.\d\d\d.\d\d\d','192.168.111.123')執行結果:
存在兩個問題:
字符類
元字符[ 和元字符] ,即中括號是兩個元字符,用它們來創建一個字符類,字符類的含義也就是只需要匹配到字符類中的任何一個字符,都算匹配成功。
完整元字符:
. ^ $ * + ? { } [ ] \ | ( )例子1:匹配元音字符:
re.search(r'[aeiou]','l like dog')執行結果:
注意:
正則表達式默認開啟大小寫敏感模式,即大寫的i和小寫的i是有區別的
re.search(r'[aeiouAEIOU]','I like dog')執行結果:
表示范圍(-)
注意,第一個是大寫的i,不是小寫的L
re.search(r'[a-z]','I like dog')執行結果:
執行結果:
執行結果:
限定重復匹配次數({})
固定次數
re.search(r'bda{3}6','46asd5abdaaa68897')執行結果:
范圍次數
re.search(r'bda{1,6}6','46asd5abdaaaaa68897')執行結果:
執行結果:
執行結果:
執行結果:
執行結果:
返回為null
躍躍欲試
用正則表達式匹配188如何操作?
第一種想法
re.search(r'[0-255]','188')執行結果:
第二種想法
re.search(r'[0-2][0-5][0-5]','188')執行結果返回為null
注意:正則表達式匹配的是字符串,數字對于字符來說只有0 ~ 9,
執行結果:
執行結果:
執行結果:
正確搞法
re.search(r'[0-1]\d\d|2[0-4]\d|25[0-5]','188')執行結果:
解釋:
[0-1]\d\d|2[0-4]\d|25[0-5]解釋一下:[0-1]代表這個字符可以是0或者是1,\d表示0-9,\d表示0-9,| 表示或,即有一個成立則全部成立;2[0-4]\d2表示字符2,[0-4]表示0 ~ 4, \d表示0 - 9;25[0-5]2表示字符2,5表示字符5,[0-5]表示0 ~ 5字符。我個人覺得應該和下面代碼的字符匹配作用一樣的吧
re.search(r'[0-1][0-9][0-9]|2[0-4][0-9]|25[0-5]','188')匹配一個IP地址(進階版)
版本1
re.search(r'(([01]\d\d|2[0-4]\d|25[0-5])\.){3}([01]\d\d|2[0-4]\d|25[0-5])','192.168.111.121')
然后我們利用{}再控制一下各自的重復次數
版本2
re.search(r'(([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])','192.168.1.1') 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: JAVASE_File类(实践)——目录
- 下一篇: Python正则表达式之元字符详解(1)