這幾天玩爬蟲已經使用了很多次的re模組,算是比較熟悉了,這裡梳理一下。
首先,關於正規表示式的概念,這裡有最好的教程。
對於正規表示式,我們可以先用compile方法編譯為pattern物件,再呼叫相關的方法進行模式匹配,也可以直接進行匹配。
對於第一種,示例如下:
1234567
8910
import repat = re.compile(r'e(.*?)o') #編譯為pattern物件
text = 'hello world'
#要匹配的文字
mat = pat.match(text) #從text開頭進行匹配,開頭不符合就over,返回乙個match物件,通過group()方法獲取對應元組
src = pat.search(text) #在整個text中搜尋,第一次找到就返回,通過group()方法獲取對應元組
spl = pat.split(text) #用pat進行匹配,並以匹配的文字為界分割text,返回列表
fdl = pat.findall(text) #在text中搜尋所有匹配的內容,返回列表
sub = pat.sub(s,text) #用pat進行匹配,然後把匹配內容替換為s,返回替換之後的字串
sbn = pat.subn(s,text) #同上,但返回字串和替換次數構成的元組
fdi = pat.finditer(text) #返回迭代器
對於第二種,相應**為:
1234567
89
import retext = 'hello world'
mat = re.match(r'e(.*?)o',text)
src = re.search(r'e(.*?)o',text)
spl = re.split(r'e(.*?)o',text)
fdl = re.findall(r'e(.*?)o',text)
sub = re.sub(r'e(.*?)o',s,text)
sbn = re.subn(r'e(.*?)o',s,text)
fdi = re.finditer(r'e(.*?)o',text)
返回結果和第一種一樣,使用方法也有明顯的規律,就是把正規表示式放在第乙個引數位置。
值得注意的是,在第一種的re.compile()和第二種的方法中,都可以附加乙個額外的引數用來標明匹配模式,放在最後面。
可選值有:
re.i(全拼:ignorecase): 忽略大小寫(括號內是完整寫法,下同)
re.m(全拼:multiline): 多行模式,改變』^』和』$』的行為(參見上圖)
re.s(全拼:dotall): 點任意匹配模式,改變』.』的行為
re.l(全拼:locale): 使預定字元類 \w \w \b \b \s \s 取決於當前區域設定
re.u(全拼:unicode): 使預定字元類 \w \w \b \b \s \s \d \d 取決於unicode定義的字元屬性
re.x(全拼:verbose): 詳細模式。這個模式下正規表示式可以是多行,忽略空白字元,並可以加入注釋。
可以使用類似re.i | re.m
形式,使這兩種模式同時生效。
python模組 之 re模組
功能 實現python對正規表示式對支援與應用,將想要得到對內容按照正規表示式匹配出來 應用場景 爬蟲指令碼 對使用者輸入內容進行合規檢查 如qq格式檢查 等 功能 匹配物件中所有符合正規表示式的內容,並取出來 返回值 列表,所匹配到對項都會返回到列表中 import re content 1362...
python內建模組之re模組
在python要想使用正則必須借助於模組,re就是其中之一 查詢字串中所有匹配到的字元,並返回乙個列表,沒有匹配資料則返回乙個空列表 import re re.findall 正規表示式 帶匹配的文字 根據正則匹配除所有符合條件的資料 res re.findall b eva jason jacks...
Python之re模組詳解
re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞 import re text jgood is a handsome boy,he is cool,clever,and so on.m re.match r w s text if m print m.group 0 n...