关于Python中正则使用findall和分组的一个坑
Posted Mike江
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Python中正则使用findall和分组的一个坑相关的知识,希望对你有一定的参考价值。
首先,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)
参考资料:https://blog.csdn.net/samed/article/details/50555663
以上是关于关于Python中正则使用findall和分组的一个坑的主要内容,如果未能解决你的问题,请参考以下文章
如何解决python的re模块groupgroups与findall遇见正则表达式中分组"()"后产生的”眩晕反应“