python re模組常見函數
- 2020 年 1 月 14 日
- 筆記
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()
在以上兩個函數中,即便源字元串中有多個結果符合模式,也只會匹配一個結果,那麼我們如何將符合模式的內容全部都匹配出來呢?
- 使用re.compile()對正則表達式進行預編譯。
- 編譯後,使用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
第一行輸出,由於沒有設置第四個參數,全部替換。