首页 > 解决方案 > Python 正则表达式不返回所有组

问题描述

tags = "['foo', 'bar', 'spam']"
tags = re.findall("\[(?:'(\w+)'(?:, )?)*\]", tags)

只返回 ['spam'],而不是 ['foo', 'bar', 'spam']。我究竟做错了什么?

标签: regex

解决方案


当您使用findall包含捕获组的正则表达式时,它不会返回整个模式的匹配项,只返回捕获的组。

您的正则表达式中似乎不需要捕获组,因此请摆脱它。

tags = re.findall("\[(?:'\w+'(?:, )?)*\]", tags)

这返回:

["['foo', 'bar', 'spam']"]

推荐阅读