首页 > 解决方案 > 正则表达式缺少匹配项?

问题描述

我正在用 python 中的正则表达式做一个匹配问题,并且正在使用类似于以下的代码:

match = re.findall(r'a(.*)', 'xayaz')

我本来期望输出match = [ 'yaz', 'z'],但实际输出是match = ['yaz'].

同样,我希望re.findall(r'.*a(.*), 'xayaz')返回相同的 2 个匹配项,但我们得到['z'].

所以我的问题是为什么这些正则表达式中的每一个都缺少一个我希望它命中的匹配?还是我误解了 findall 方法?

(第一个问题,对任何错误表示歉意,并感谢您的帮助!)

标签: pythonregexfindall

解决方案


使用前瞻不“消耗”任何匹配,以便您可以获得重叠匹配

re.findall(r'(?=a(.*))', 'xayaz')

推荐阅读