首先,findall有兩種用法:
import re
re.findall(string[, pos[, endpos]])
re.findall(pattern, string[, flags])
這裡講的是第二種,裡面有一個坑。
測試代碼:
import re
xxx = "a123ca456c"
ret = re.findall(r"a(123|456)c", xxx)
print(ret)
執行結果如下:
這裡findall如果使用了分組,則輸出的内容将是分組中的内容而非find到的結果,為了得到find到的結果。
解決方式,要加上問号來啟用“不捕捉模式”:
import re
xxx = "a123ca456c"
ret = re.findall(r"a(?:123|456)c", xxx)
print(ret)
執行結果:
import re
xxx = "a123ca456c"
ret = re.findall(r"a123c|a456c", xxx)
print(ret)