re 模組使用

2022-09-11 10:30:13 字數 4311 閱讀 1657

re模組是python獨有的匹配字串的模組,該模組中提供的很多功能是基於正規表示式實現的,而正規表示式是對字串進行模糊匹配,提取自己需要的字串部分,他對所有的語言都通用。

正規表示式元字元

元字元

匹配內容

.匹配除換行符以外的任意字元

\w匹配字母或數字或下劃線

\s匹配任意的空白字元

\d匹配數字

\n匹配乙個換行字元

\t匹配乙個製表字元

\b匹配乙個單詞的結尾

^匹配字串的開始

$匹配字串的結尾

\w匹配非字母或數字或下劃線

\d匹配非數字

\s匹配非空白字元

a|b 

匹配字元a或字元b

()匹配括號內的表示式,也表示乙個組

[...]

匹配字元組中的字元

[^...]

匹配除了字元組中字元的所有字元

這則表示式中的量詞

量詞用法說明

*重複零次或更多次

+重複一次或更多次

?重複零次或一次

重複n次

重複n次貨更多次

重複n到m次

import

restr = '

testtest123'#

方法一:

#group:方法得到匹配的字串,如果字串沒有匹配,則返回none

print(re.match('

\w+', str).group())

import

restr = '

testtest123'#

方法二:

pattern = re.compile('

\w+'

)value =pattern.match(str).group()

print(value)

re.compile(pattern,flags=0):用於編譯正規表示式,生成乙個正則表達物件。

import

restr = '

testtest123'#

用於編譯正規表示式,生成乙個正規表示式物件

regexp = re.compile('

t(.+)t')

#呼叫regexp物件使用findall取出str t...t之間的值

value =regexp.findall(str)

print(value)

['

esttes

']

re.search(pattern,string,flags = 0):掃瞄字串以查詢正規表示式模式產生匹配項的第乙個位置 ,然後返回相應的match物件。

import

restr = '

testtest123'#

用於編譯正規表示式,生成乙個正規表示式物件

#方法一

regexp = re.compile('t'

)value =regexp.search(str)

print

(value)

#方法二

value2 = re.search('t'

, str).group()

print(value2)

'

t'>t

re.match(pattern, string, flags=0):如果字串開頭的零個或多個字元與正規表示式模式匹配,則返回相應的匹配物件。

import

restr = '

testtest123

'print(re.match('t'

, str).group())

print(re.match('

\w+'

, str).group())

print(re.match('

\d+', str).group())

t

testtest123

testtest

re.fullmatch(pattern,string,flags=0):如果整個字串與正規表示式模式匹配,則返回相應的match物件。

import

restr = '

testtest123

'print(re.fullmatch('

\w+', str).group())

testtest123

re.split(pattern,string,maxsplit=0,flags=0):通過出現模式來拆分字串。如果在pattern中使用了捕獲括號,那麼模式中所有組的文字也將作為結果列表的一部分返回。如果maxsplit不為零,則最多會發生maxspalit分割,並將字串的其餘部分作為列表的最後乙個元素返回。

import

restr = '

testtest123

'print(re.split('t'

, str))

print(re.split('

2', str))

['', '

es', '', '

es', '

123'][

'testtest1

', '

3']

re.findall(pattern,string,flags=0):以string列表形式返回string中pattern的所有非重疊匹配項。從左到右掃瞄該字串,並以找到的順序返回匹配項。如果該模式中存在乙個或多個組,則返回乙個組列表;否則,返回乙個列表。如果模式包含多個組,則這將是乙個元祖列表。空匹配項包含在結果中。

import

restr = '

testtest123

'print(re.findall('t'

, str))

print(re.findall('

2', str))

['

t', '

t', '

t', 't'

]['2

']

re.finditer(pattern,string,flags=0):返回乙個迭代器,該迭代器在string型別的re 模式的所有非重疊匹配中產生匹配物件。

import

restr = '

testtest123

'print(re.finditer('

t', str))

re.sub(pattern,repl,string,count=0,flags=0):返回通過用替換repl替換字串中最左邊的不重疊模式所獲得的字串。如果找不到該模式,則返回的字串不變。repl可以是字串或函式;如果是字串,則處理其中的任何反斜槓轉義。即,將其轉換為單個換行符,將其轉換為回車,依次類推。count引數表示將匹配到的內容進行替換的次數

import

restr = '

testtest123

'print(re.sub('

\d', '

one'

, str))

print(re.sub('

\d', '

one', str, 2))

testtestoneoneone

testtestoneone3

re.subn(pattern, repl, string, count=0, flags=0):執行與相同的操作sub(),但是返回乙個元組。(new_string,number_of_subs_made)

import

restr = '

testtest123

'print(re.subn('

\d', '

one'

, str))

print(re.subn('

\d', '

one', str, 2))

('

testtestoneoneone

', 3)('

testtestoneone3

', 2)

re模組使用

import re strdata python is the best language in the world match只能匹配以 開頭的子符串,第乙個引數是正則,第二個引數是需要匹配的字串 res re.match p strdata,re.i re.i引數表示忽略大小寫 res re.m...

RE模組使用

i mport reli re.match d 12821j128j312893j129 match方法,先使用正規表示式,然後傳入待查字串 print li 結果物件 sre.sre match object span 0,5 match 12821 ifli print li.group 獲得資...

re模組使用案例

寫在前面的話 re模組當中有很多函式,但是以下三種 re.sub,re.findall,re.match 這三個命令是爬蟲當中經常使用到的 爬蟲當中經常使用到re.sub,re.findall,re.match 進行資料清洗,提取,請務必掌握好這3個命令。接下來就是一些小案例,訓練並掌握下對re.s...