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()

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

  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

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