python - 正则表达式缺少匹配项?
问题描述
我正在用 python 中的正则表达式做一个匹配问题,并且正在使用类似于以下的代码:
match = re.findall(r'a(.*)', 'xayaz')
我本来期望输出match = [ 'yaz', 'z']
,但实际输出是match = ['yaz']
.
同样,我希望re.findall(r'.*a(.*), 'xayaz')
返回相同的 2 个匹配项,但我们得到['z']
.
所以我的问题是为什么这些正则表达式中的每一个都缺少一个我希望它命中的匹配?还是我误解了 findall 方法?
(第一个问题,对任何错误表示歉意,并感谢您的帮助!)
解决方案
使用前瞻不“消耗”任何匹配,以便您可以获得重叠匹配
re.findall(r'(?=a(.*))', 'xayaz')
推荐阅读
- python - 不支持 selenium python chrome 无头模式
- google-data-studio - 如何在 url 中指定报表的数据源
- memory - 在状态文件中报告 vmRSS 是否有延迟?
- string - 从 impala 中的字符串中删除子字符串
- javascript - Redux - 如何从 localStorage 部分填充 initialState
- arrays - 如何在添加结果之前将默认值设置为数组
- db2 - 物理文件的现代化
- airflow - 气流无法打开 .cache 文件
- service-worker - 在线时如何存储查询列表并将它们发送到mySQL?
- javascript - React useState 更新问题