python之路----正則re(search,match,findall……)


  關於python中非常強大的模塊之一-----re模塊,筆者也還只是一個初學者,記錄一下關於re下的各個子模塊是初步使用。

  這里我就不介紹匹配語法了,說一說小括號(值|值)在幾個常用模塊中的作用(因為遇到了相關問題)。 

import re
a = 'python Python CDpython CDPython'
result = re.search(r'(P|p)ython',a)
#運行結果
<_sre.SRE_Match object; span=(0, 6), match='python'>

  通過以上結果,返回的結果是一個Match類,其中match為匹配結果,我們可以通過group()模塊來提取我們的結果,而且可以看到只返回了一個匹配結果,這是search的的匹配方式,開始遍歷字符串,遇到匹配值直接返回。

import re
a = 'python Python CDpython CDPython' result = re.search(r'(P|p)ython',a)
#運行結果
['p', 'P', 'p', 'P']

  很奇怪findall為什么只返回了幾個字母,按照常理來說,不應該返回Python或者python嗎?其實這就是findall與search等其他模塊不一樣的地方,首先findall返回的是一個列表,search和match返回的是一個Match類,之后,findall中的小括號是來定義具體匹配結果邊界,也就是findall返回的是小括號中的匹配對象,而不是整個單引號中的。

  match與search又有一點點不同:

import re
a = 'abcpython Python CDpython CDPython'
result = re.search(r'(P|p)ython',a)
#運行結果
<_sre.SRE_Match object; span=(3, 9), match='python'>
result1 = re.match(r'(P|p)ython',a)
print(result1)
#運行結果
None

   match是從字符串的第一個字符就開始匹配,第一個字符不符合就直接跳出匹配,所以此處的匹配結果是None。

  其他的待筆者遇到並處理了在更新吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM