關於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。
其他的待筆者遇到並處理了在更新吧!