首先,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)