正则表达式缺少匹配项?
Regex missing matches?
我正在 python 中使用正则表达式进行匹配,我使用的代码类似于以下内容:
match = re.findall(r'a(.*)', 'xayaz')
我本来期望输出 match = [ 'yaz', 'z']
但实际输出是 match = ['yaz']
.
同样,我希望 re.findall(r'.*a(.*), 'xayaz')
到 return 相同的 2 场比赛,但我们得到 ['z']
.
所以我的问题是,为什么这些正则表达式中的每一个都缺少一个我希望它命中的匹配项?还是我误解了 findall 方法?
(第一个问题,如有错误请见谅,感谢您的帮助!)
使用前瞻不“消耗”任何匹配,这样您就可以获得重叠的匹配
re.findall(r'(?=a(.*))', 'xayaz')
我正在 python 中使用正则表达式进行匹配,我使用的代码类似于以下内容:
match = re.findall(r'a(.*)', 'xayaz')
我本来期望输出 match = [ 'yaz', 'z']
但实际输出是 match = ['yaz']
.
同样,我希望 re.findall(r'.*a(.*), 'xayaz')
到 return 相同的 2 场比赛,但我们得到 ['z']
.
所以我的问题是,为什么这些正则表达式中的每一个都缺少一个我希望它命中的匹配项?还是我误解了 findall 方法?
(第一个问题,如有错误请见谅,感谢您的帮助!)
使用前瞻不“消耗”任何匹配,这样您就可以获得重叠的匹配
re.findall(r'(?=a(.*))', 'xayaz')