day22 re模組下的常用方法

2022-09-08 05:03:09 字數 2960 閱讀 9452

一  :  re模組的查詢

findall  優先順序查詢  返回列表 找所有的匹配項(從大段的內容中找匹配到的專案)

import re

str = "qwer asdf zxcv qwerasd"

ret =re.compile("\w+\s\w+") #第一種沒有括號的

print(ret.findall(str))

# 結果 : ['qwer asdf', 'zxcv qwerassd']

str = "qwer asdf zxcv qwerasd"

ret =re.compile("(\w+)\s\w+") #第二種有乙個括號的

print(ret.findall(str))

#結果 : ['qwer', 'zxcv']

str = "qwer asdf zxcv qwerasd"

ret =re.compile("((\w+)\s\w+)") #第三種有兩個括號的

print(ret.findall(str))

#結果 : [('qwer asdf', 'qwer'), ('zxcv qwerassd', 'zxcv')]

search: 只匹配從左到右的第乙個,得到的不是直接結果,得到的是乙個變數,通過這個變數的group方法來獲取結果,如果沒有匹配到返回none,group會報錯.

import re

ret = re.research('\d+',"sjkhk172按實際花費928")

print (ret) #記憶體位址,這是乙個正則匹配的結果

print(ret.group()) #通過ret.group()獲取真正的結果

#<_sre.sre_match object; span=(5, 8), match='172'>

#172

ret = re.search('\d','owghabdjlbnd**')

print(ret) #none

print(ret.group()) #會報錯

match:相當於search的正規表示式中加個" ^ "

import re

ret = re.match('\d+',"172sjkhk按實際花費928") #match相當於在\d前加' ^'

print(ret) #位址

print(ret.group()) #匹配到的內容

#<_sre.sre_match object; span=(0, 3), match='172'>

#172

split:字串擴充套件的處理  替換 切割

s = 'alex|taibai|egon|'

print(s.split('|'))

#結果 :['alex', 'taibai', 'egon', '']

import re

s = 'alex83taibai40egon25'

ret = re.split('\d+',s)

print(ret)

#['alex', 'taibai', 'egon', '']

sub/subn :替換,按照正則規則取尋找要被替換的內容,subn返回被替換的元組,第二個值是被替換的次數

ret = re.sub('\d+','h','alex83taibai40egon25')

print(ret)

ret = re.sub('\d+','h','alex83taibai40egon25',1) #這裡的1是替換一次

print(ret)

subn 返回乙個元組#,第二個元素是替換的次數

# ret = re.subn('\d+','h','alex83taibai40egon25')

# print(ret)

#alexhtaibaihegonh

#alexhtaibai40egon25

#('alexhtaibaihegonh', 3) #這裡的3是指替換了3次

compile 編譯乙個正規表示式用這個結果取search , match , findall , finditer 能夠節省時間

ret = re.compile('\d+')     #已經完成編譯

res = ret.findall('alex83taibai40egon25')

print(res)

#['83', '40', '25']

res = re.search('sjkhk172按實際花費928')

print(res)

#172

finditer 節省你使用正規表示式解決問題的空間/記憶體

返回乙個迭代器,所有的結果都在這個迭代器中,需要

ret = re.finditer('\d+','alex83taibai40egon25')

for i in ret:

print(i.group())

#83#40

#25

總結:

#findall 返回列表 找所有的匹配項

# search 匹配就 返回乙個變數,通過group取匹配到的第乙個值,不匹配就返#回none,group會報錯

# match 相當於search的正規表示式中加了乙個'^'

# spilt 返回列表,按照正則規則切割,預設匹配到的內容會被切掉

# sub/subn 替換,按照正則規則去尋找要被替換掉的內容,subn返回元組,第二#個值是替換的次數

# compile 編譯乙個正規表示式,用這個結果去search match findall #finditer 能夠節省時間

# finditer 返回乙個迭代器,所有的結果都在這個迭代器中,需要通過迴圈#+group的形式取值 能夠節省記憶體

re模組下的的常用方法

引入模組 import re 1.查詢 findall 匹配所有,每一項都是列表中的乙個元素 ret re.findall d sjkhk172按實際花費928 print ret 172 928 search 只匹配從左到右的第乙個,得到的不是結果,而是乙個變數,通過這個變數的group方法來獲取...

re模組常用方法

match string pos endpos string是待匹配的字串pos和endpos可選引數,指定字串的起始和終點位置,預設值分別是0和len 字串長度 match 方法 從起始位置開始查詢,一次匹配 re.match pattern,string,flags 0 result re.ma...

Python的re模組常用方法

search 匹配就 返回乙個變數,通過group取匹配到的第乙個值,不匹配就返回none,group會報錯 match 相當於search的正規表示式中加了乙個 spilt 返回列表,按照正則規則切割,預設匹配到的內容會被切掉 sub subn 替換,按照正則規則去尋找要被替換掉的內容,subn返...