re模組下的的常用方法

2022-03-13 07:22:34 字數 3641 閱讀 5482

引入模組:

import re

1.查詢

findall   匹配所有,每一項都是列表中的乙個元素

ret=re.findall("

\d+","

sjkhk172按實際花費928")

print(ret)

['172', '928']

search  只匹配從左到右的第乙個,得到的不是結果,而是乙個變數,通過這個變數的group方法來獲取結果。

ret=re.search("

\d+","

sjkhk172按實際花費928")

print

(ret)

print

(ret.group())

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

172'>

172

ret=re.search("

\d+","

sjkhk172按實際花費928")

if ret:#

記憶體位址,這是乙個正則的匹配結果

print(ret.group())#

獲取真正的結果

172

match  從頭開始匹配,相當於search中的正規表示式加上乙個^

ret=re.match("

\d+$

",'172sjkhk按實際花費928')

print

(ret)

none

ret=re.match("\d+",'172sjkhk按實際花費928')

print(ret)

print(ret.group())

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

172

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

split  切割

s = '

alex83taibai40egon25'#

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

#print(ret)['

alex

', '

taibai

', '

egon

', '']

sub  替換 舊的   新的   替換次數

ret = re.sub('

\d+','

h','

alex83taibai40egon25

',2)

print

(ret)

alexhtaibaihegon25

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

ret = re.subn('

\d+','

h','

alex83taibai40egon25')

print

(ret)('

alexhtaibaihegonh

', 3)

re模組的高階    時間  空間

compile   節省使用正規表示式解決時間問題   把正規表示式編譯成位元組碼,在以後的多次使用過程中不會多次編碼

ret=re.compile("

\d+"

)res=ret.findall("

alex83taibai40egon25")

print

(res)

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

res=ret.search("

sjkhk172按實際花費928")

print

(res.group())

172

finditer  節省正規表示式解決問題的記憶體或者空間

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

\d+","

alex83taibai40egon25")

for i in

ret:

print

(i.group())

8340

25

分組在ret模組下的使用

s = '

wahaha'#

標籤語言 html 網頁

ret = re.search('

<(\w+)>(\w+)

',s)

print(ret.group()) #

所有的結果

print(ret.group(1)) #

數字引數代表的是取對應分組中的內容

print(ret.group(2))

print(ret.group(3))

wahaha

awahaha

a

s = '

wahaha

'ret=re.findall('

(\w+)

',s )

print

(ret)

ret=re.findall('

>(\w+)<

',s)

print

(ret)['

a', '

wahaha

', 'a'

]['wahaha']

為了findall也可以順利取到分組中的內容,有乙個特殊的語法,就是優先顯示分組中的內容

#

取消分組優先(?:正規表示式)

ret = re.findall('

\d+(\.\d+)?

','1.234*4')

print(ret)

['.234', '']

#

分組命名 (?p《這個組的名字》正規表示式)

#s = 'wahaha'

#ret = re.search('>(?p\w+)<',s)

#print(ret.group(1))

#print(ret.group('con'))

使用前面的分組 要求使用這個名字的分組和前面同名分組中的內容匹配的必須一致

精準的取到整數 過濾掉小數

ret=re.findall(r"

\d+\.\d+|\d+

","1-2*(60+(-40.35/5)-(-4*3))")

print

(ret)

ret=re.findall(r"

\d+\.\d+|(\d+)

","1-2*(60+(-40.35/5)-(-4*3))")

ret.remove('')

print

(ret)['

1', '

2', '

60', '

40.35

', '

5', '

4', '3'

]['1

', '

2', '

60', '

5', '

4', '

3']

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返...

day22 re模組下的常用方法

一 re模組的查詢 findall 優先順序查詢 返回列表 找所有的匹配項 從大段的內容中找匹配到的專案 import re str qwer asdf zxcv qwerasd ret re.compile w s w 第一種沒有括號的 print ret.findall str 結果 qwer ...