正則表達式是一種字符串匹配方法,它可以用來匹配字符串。很多語言都有正則表達式的應(yīng)用,比如python應(yīng)用正則表達式的地方最出名的就是爬蟲中一些字段的匹配。python的正則表達式的實現(xiàn)由一個名叫re的模塊實現(xiàn),該模塊下有個叫re.search()的方法,今天我們就來介紹這個方法。
1 re.search() 的作用:
re.search會匹配整個字符串,并返回第一個成功的匹配。如果匹配失敗,則返回None
從源碼里面可以看到re.search()方法里面有3個參數(shù)
pattern: 匹配的規(guī)則,
string : 要匹配的內(nèi)容,
flags 標(biāo)志位 這個是可選的,就是可以不寫,可以寫, 比如要忽略字符的大小寫就可以使用標(biāo)志位
flags 的主要內(nèi)容如下
flags : 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體參數(shù)為:
- re.I 忽略大小寫
- re.L 表示特殊字符集 w, W, , B, s, S 依賴于當(dāng)前環(huán)境
- re.M 多行模式
- re.S 即為 . 并且包括換行符在內(nèi)的任意字符(. 不包括換行符)
- re.U 表示特殊字符集 w, W, , B, d, D, s, S 依賴于 Unicode 字符屬性數(shù)據(jù)庫
- re.X 為了增加可讀性,忽略空格和 # 后面的注釋
2 demo 練習(xí)re.search() 的使用
2.1 search 簡單的匹配
打印結(jié)果如下
從內(nèi)容我們可以看到span(2, 3) 這個應(yīng)該是對應(yīng)的下標(biāo),所以我們想獲取匹配的下標(biāo)可以使用span
match 是匹配的內(nèi)容, 內(nèi)容為c
2.2 獲取匹配的下標(biāo)
打印結(jié)果如下
2.3 獲取匹配的內(nèi)容 ,使用group(匹配的整個表達式的字符串)
打印結(jié)果如下
注意group 和span 不能同時使用, 否則會報錯
2.4 使用標(biāo)志位忽略匹配的大小寫
打印結(jié)果如下
這里使用大寫字母C 忽略大小寫之后也能匹配到c
2.5 使用search 匹配字符串里面的數(shù)組
打印結(jié)果
2.6 search 結(jié)合compile 使用
import re
content = "abc123abc"
rex_content = re.compile("d+")
rex = rex_content.search(content)
print(rex.group())
打印結(jié)果
2.7 group 的使用
import re
content = "abc123def"
rex_compile = re.compile("([a-z]*)([0-9]*)([a-z]*)")
rex = rex_compile.search(content)
print(rex.group())
print(rex.group(0)) # group()和group(0) 一樣匹配的是整體
print(rex.group(1)) # 匹配第一個小括號的內(nèi)容
print(rex.group(2)) # 匹配第二個小括號的內(nèi)容
print(rex.group(3)) # 匹配第三個小括號的內(nèi)容
打印結(jié)果
group() 小括號里面不止有數(shù)字,可以是自定的內(nèi)容如下
content = "zhangsanfeng108le"
rex_compile = re.compile("(?P<name>[a-z]*)(?P<age>[0-9]*)")
rex_content = rex_compile.search(content)
print(rex_content.group())
print(rex_content.group("name")) # 這里效果等同于group(1)
print(rex_content.group("age")) # 這里效果等同于group(2)
打印結(jié)果如下
總結(jié)
到此這篇python應(yīng)用正則表達式的文章就介紹到這了,更多python相關(guān)的學(xué)習(xí)內(nèi)容請搜索W3Cschool以前的文章或繼續(xù)瀏覽下面的相關(guān)文章。