python學習第十四節(正則)
python2和python3都有兩種字符串類型
str
bytes
re模塊
find一類的函數都是精確查找。
字符串是模糊匹配
findall(pattern,string,flags)
replace函數
‘hello python‘.replace(‘p‘,‘P‘)
‘hello Python‘
a=‘sadfadf232wwewfr323rwef34534trwef‘
import re
w=re.findall(‘\d‘,‘sadfadf232wwewfr323rwef34534trwef‘)
w=re.findall(‘\d+‘,‘sadfadf232wwewfr323rwef34534trwef‘)
print(w)
re.findall 將所有符合規則的結果保存到一個列表裏。
re.findall(pattern,string)
key: 元字符 (有特殊功能的字符)
通配符:
. 點 能匹配任何一個除換行符以外的符號,也就是說點能代表任何符號。
* [0,+00] 0到無窮次的範圍
+ [1,+00] 1到無窮次的範圍
? [0,1] 0個或1個
{} {n,m} 可以寫{3,5} 3到5個 也可以寫{3} 3個 ,也可以寫{0,} 無窮次的意思
字符集:
[] 用法,re.findall("a[bd]c","safasdfaefsdf") 裏面[bd]是或者的關系,或者是b或者是d 都顯示出來
如果[]中加了標點符號,標點符號和字母是同級別的 過濾的是a,b等內容。
[] 中如果加上通配符,那麽並沒有通配符的意義,只是匹配相關符號內容的東西
[0-9] 只是匹配一個數字,如果需要找4位的數字,[0-9]{4}
[] 字符集中 有特殊意義的字符為: - ^ \
^ 開始匹配
$ 結尾匹配
():分組
(ad) 匹配這個組
(ad)+yuan 圖中下面這個匹配的是藍色內容,但是分組優先顯示()分組內的內容,所以結果是ad
如上圖所示,可以取消()的優先級,將藍色內容打印出來,?:這個語法就是取消優先級,不光顯示分組,還可以顯示其他內容。
如上圖,該打印出的內容為3,因為數字很多,匹配到的是yuan,但是顯示分組內容3
取消分組特性
如上圖,|是或的意思
如果或後面沒有匹配到則顯示空。
如上圖,上面這種可以直接匹配出網址。
\ 轉譯,能將字母轉譯成特殊意義,也能將特殊意義的字符轉移成普通字符
\d 代表0-9的任意一個字符
\w 代表任意數字或字母的字符
\. 點變成普通符號
復雜一點的
\s 取出來有個空格
search方法
找到一個對應的就不再向後匹配
match方法
只匹配開頭,如果開頭沒有則返回None
作業
分組給組起名字,根據名字來取內容
字符集中可以用的特殊符號
|管道符
python學習第十四節(正則)