引入模組:
import re
1.查詢
findall 匹配所有,每一項都是列表中的乙個元素
ret=re.findall("\d+","
sjkhk172按實際花費928")
print(ret)
['172', '928']
search 只匹配從左到右的第乙個,得到的不是結果,而是乙個變數,通過這個變數的group方法來獲取結果。
ret=re.search("\d+","
sjkhk172按實際花費928")
(ret)
(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')
(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)
(ret)
alexhtaibaihegon25
subn 返回乙個元組,返回的第二個元素是替換的次數
ret = re.subn('\d+','
h','
alex83taibai40egon25')
(ret)('
alexhtaibaihegonh
', 3)
re模組的高階 時間 空間
compile 節省使用正規表示式解決時間問題 把正規表示式編譯成位元組碼,在以後的多次使用過程中不會多次編碼
ret=re.compile("\d+"
)res=ret.findall("
alex83taibai40egon25")
(res)
['83', '40', '25']
res=ret.search("sjkhk172按實際花費928")
(res.group())
172
finditer 節省正規表示式解決問題的記憶體或者空間
返回乙個迭代器,所有的結果都在這個迭代器中,需要通過迴圈+group的形式取值 能夠節省記憶體
ret=re.finditer("\d+","
alex83taibai40egon25")
for i in
ret:
(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 )
(ret)
ret=re.findall('
>(\w+)<
',s)
(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))")
(ret)
ret=re.findall(r"
\d+\.\d+|(\d+)
","1-2*(60+(-40.35/5)-(-4*3))")
ret.remove('')
(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 ...