python re模塊常見函數

re.match()函數

如果想要從源字符串的起始位置匹配一個模式,我們可以使用re.match()函數。re.match()函數的使用格式是:
re.match(pattern, string, flag)

re.search()函數

我們還可以使用re.search()函數進行匹配,使用該函數進行匹配,會掃描整個字符串並進行對應的匹配。
該函數與re.match()函數最大的不同是,re.match()函數從源字符串的開頭進行匹配,而re.search()函數會在全文中進行檢索匹配。
示例如下:

import re

pattern1 = "python"
string = "abcdpythonfphp345pythonxadi_py"
result1 = re.search(pattern1, string)

print(result1)
print(result1.group())

執行結果:

<_sre.SRE_Match object; span=(4, 10), match='python'>
python

re.compile()

在以上兩個函數中,即便源字符串中有多個結果符合模式,也只會匹配一個結果,那麼我們如何將符合模式的內容全部都匹配出來呢?

  1. 使用re.compile()對正則表達式進行預編譯。
  2. 編譯後,使用findall()根據正則表達式從源字符串中將匹配的結果全部找出。

我們可以通過下面的實例更好理解:

import re

string = "hellomypythonhispythonourpythonend"
pattern = re.compile(".python.")#預編譯
result = pattern.findall(string)#找出符合模式的所有結果

print(result)

執行結果:

['ypythonh', 'spythono', 'rpythone']

可以看到,這段代碼會將string中滿足pattern模式的結果全部輸出,符合條件的結果一共有3個。

re.sub()函數

如果,想根據正則表達式來實現替換某些字符串的功能,我們可以使用re.sub()函數來實現。
使用re.sub這個函數,會根據正式表達式pattern,從源字符串string查找出符合模式的結果,並替換爲字符串rep,最多可替換max次。
re.sub()函數的格式如下:
re.sub(pattern,rep,string,max)
其中,第一個參數爲對應的正則表達式,第二個參數爲要替換成的字符串,第三個參數爲源字符串,第四個參數爲可選項,代表最多替換的次數,如果忽略不寫,則會將符合模式的結果全部替換。

import re

string = "hellomypythonhispythonourpythonend"
pattern = "python."
result1 = re.sub(pattern,"php",string)   # 全部替換
result2 = re.sub(pattern,"php",string,2) # 最多替換2次

print(result1)
print(result2)

結果如下:

hellomyphpisphpurphpnd
hellomyphpisphpurpythonend

第一行輸出,由於沒有設置第四個參數,全部替換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章