re模組及其用法

2022-08-29 04:15:08 字數 3045 閱讀 7197

一、re模組下的常用方法

首先在使用re模組之前,需要引入re模組

import re

1.findall  返回列表,找到所有的匹配項

ret = re.findall("

\d+","

asda132eqwe啊阿達456")

print

(ret)

#['132', '456']

2.search 匹配從左到右第乙個符合,返回乙個變數,通過group方法取到值,沒有匹配到就會返回none,使用group會報錯。

ret = re.search("

\d+","

asda132eqwe啊阿達456")

print

(ret.group())

#132

ret = re.search("

\d+","

asdaeqwe啊阿達")

print

(ret.group())

#attributeerror: 'nonetype' object has no attribute 'group'

3.match 相當於在search的正規表示式中加了乙個「^」

2.與字串處理相關的;

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

ret = re.split("

\d+","

asd23sadasd90dasdasd809asd89

")  #(\d+)可以把切割掉的保留下來

print

(ret)

#['asd', 'sadasd', 'dasdasd', 'asd', '']

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

ret = re.sub("

\d+","

h","

asd23asd34455asd55")

print

(ret)

#asdhasdhasdh

ret = re.subn("

\d+","

h","

asd23asd34455asd55")

print

(ret)

#('asdhasdhasdh', 3)

3.re模組的高階:時間\空間

1.compile  編譯乙個正規表示式,用這個結果去search match findall finditer 能節省時間,不用每次使用的時候再去編譯了。

ret = re.compile("

\d+"

)res = ret.findall("

asd23asd34455asd55")

print

(res)

res = ret.search("

asd23asd34455asd55")

print(res.group())

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

res = re.finditer("

\d+","

asd23asd34455asd55")

print

(res)

for i in

res:

print(i.group())

二、分組在re模組中的使用

s = '

wahaha

'ret = re.search("

(>)(\w+)(<)

",s)

print(ret.group()) #

不加引數,預設是匹配所有結果

print(ret.group(1)) #

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

print(ret.group(2))

print(ret.group(3))

ret = re.findall("

>(\w+)<

",s)

print

(ret)

#['wahaha']

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

ret = re.findall('

\d+(?:\.\d+)?

','1.234*4')

print

(ret)

#['1.234', '4']

#如果按照優先顯示,那麼結果就不是想要的。所以在括號中加入"?:"就可以取消分組優先,還不會破壞原本的正規表示式。

ret = re.split('

(\d+)

','alex83taibai40egon25aa')

print

(ret)

#['alex', '83', 'taibai', '40', 'egon', '25', 'aa']

#用split切割後消失的部分,可以用()將正則規則括起來,這樣就能得到切割掉的部分

s = '

wahaha

'ret = re.search("

>(?p\w+)<

",s)

print(ret.group(1))

print(ret.group("

com"))#

wahaha

#wahaha

#可以通過在分組中加入"?p",來對這個分組命名,在group給引數時可以給這個組的名字。

#

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

s = '

wahaha

'ret = re.search("

<(?p\w+)>(\w+)

",s)

print

(ret.group())

#wahaha

re模組及其方法

re模組 import re 正規表示式本身具有處理字串的能力 如果要處理的字串存在python的記憶體裡,模組 操作正規表示式 ret re.findall d kdk334k5kjkj76k54j5kk print ret 一次性返回所有匹配到的項,直接存到列表中.findall 和分組 的問題...

re模組的高階用法

匹配閱讀文章的次數 import re ret re.search r d 閱讀次數為 10887 print ret.group import re ret re.findall r d python 8989,c 3456,c 78781 print ret 執行結果 8989 3456 787...

re模組findall函式用法

本文件介紹了正規表示式元字元 和 re模組 findall 函式用法。給予正規表示式強大的功能和靈活性。表 示 法 描述正規表示式示例 符號literal 匹配文字字串的字面值literal foo.匹配任何字元 除了 n 之外 b.b 匹配字串起始部分 dear 匹配字串終止部分 bin sh 表...