爬蟲筆記(七) 正規表示式常見函式

2021-08-21 12:49:51 字數 1900 閱讀 6443

常見的正規表示式函式有四個,分別是re.match()、re.search()、全域性匹配函式、re.sub()。

re.match()函式是從源字串的起始位置開始匹配乙個模式,其使用格式為re.match(pattern,string,flag),其中pattern代表對應的正規表示式,string代表源字串,flag是可選引數,代表對應的標誌位,可以是模式修正符等資訊。

import re

string = "wanglong_pythonlove334ipythonhate_python"

pattern1 = ".anglong."

result1 = re.match(pattern1,string)

result2 = re.match(pattern1,string).span()

print (result1)

print (result2)

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

#(0, 9)

通過.span()可以過濾掉一些資訊,只留下匹配成功的結果在元字串中的位置。

match() 方法一旦匹配成功,就是乙個match object物件,而match object物件有以下方法:

與re.match()函式最大的不同就是re.search()函式是在全文進行檢索並匹配,而re.match()是在源字串的起始位置開始匹配,下面**可以看出它們的不同。

import re

string = "wanglong_pythonlove334ipythonhate_python"

pattern1 = ".python."

result1 = re.search(pattern1,string)

result2 =re.match(pattern1,string)

print (result1)

print (result2)

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

#none

通過觀察我們可以發現,在上述匹配中,即使有多個字元滿足模式要求,但卻都只能匹配乙個出來,要想全部匹配出來,就要先使用re.compile()對正規表示式進行預編譯,然後使用findall()根據正規表示式從源字串中匹配所有的結果。

import re

string = "wanglong_pythonlove334ipythonhate_pythonlong"

pattern1 = re.compile(".python.")

result1 = pattern1.findall(string)

print (result1)

#['_pythonl', 'ipythonh', '_pythonl']

這個函式可以實現根據正規表示式替換某些字串的功能,使用格式為re.sub(pattern,rep,string,max),rep是指要代替的字串,max是最大替換次數。

import re

string = "wanglong_pythonlove334ipythonhate_pythonlong"

pattern1 = ".python."

result1 = re.sub(pattern1,"c++",string)

result2 = re.sub(pattern1,"c++",string,2)

print (result1)

print (result2)

#wanglongc++ove334c++atec++ong

#wanglongc++ove334c++ate_pythonlong

正規表示式常見用法

正規表示式是處理字串的強大工具,具有特定的語法結構,可以實現字串的檢索 替換 匹配驗證等。第乙個引數傳入正規表示式,第二個引數傳入要匹配的字串 嘗試從字串的起始位置匹配正規表示式,如果匹配成功就返回匹配的結果,否則返回none import re content hello 1234 5678 wo...

正規表示式常見錯誤

如果用 0 9 匹配 a 1234 num 備用狀態是否包括 a 1234 num 點號代表位置 p.164 答案是否定的.星號限定的部分總是能夠匹配.如果整個表示式都由星號控制,它就能夠匹配任何內容.在字串的開始位置,傳動機構對引擎進行第一次嘗試時的狀態,當然算匹配成功.在這種情況下,正規表示式匹...

正規表示式與正規表示式常見的函式(python)

乙個正規表示式可以有原子,元字元,模式修政符,貪婪模式,和懶惰模式構成。1 原子 1 普通字元作為原子 如數字,大小寫字母,下劃線等。import re pattern abc string shuhgabchuh result re.search pattern,string 呼叫re模組的sea...