若是想要從源字符串的起始位置匹配一個模式,咱們能夠使用re.match()函數。re.match()函數的使用格式是:
re.match(pattern, string, flag)php
咱們還能夠使用re.search()函數進行匹配,使用該函數進行匹配,會掃描整個字符串並進行對應的匹配。
該函數與re.match()函數最大的不一樣是,re.match()函數從源字符串的開頭進行匹配,而re.search()函數會在全文中進行檢索匹配。
示例以下:python
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
在以上兩個函數中,即使源字符串中有多個結果符合模式,也只會匹配一個結果,那麼咱們如何將符合模式的內容所有都匹配出來呢?ide
咱們能夠經過下面的實例更好理解:函數
import re string = "hellomypythonhispythonourpythonend" pattern = re.compile(".python.")#預編譯 result = pattern.findall(string)#找出符合模式的全部結果 print(result)
執行結果:spa
['ypythonh', 'spythono', 'rpythone']
能夠看到,這段代碼會將string中知足pattern模式的結果所有輸出,符合條件的結果一共有3個。code
若是,想根據正則表達式來實現替換某些字符串的功能,咱們能夠使用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)
結果以下:string
hellomyphpisphpurphpnd hellomyphpisphpurpythonend
第一行輸出,因爲沒有設置第四個參數,所有替換。it