Python正则表达式-如何从通配符表达式捕获多个组?
我有一个Python正则表达式,其中包含一个组,该组可以出现零次或多次,但当我随后检索组列表时,只有最后一个组出现。例如:Python正则表达式-如何从通配符表达式捕获多个组?,python,regex,lexical-analysis,Python,Regex,Lexical Analysis,我有一个Python正则表达式,其中包含一个组,该组可以出现零次或多次,但当我随后检索组列表时,只有最后一个组出现。例如: re.search(“(\w)*”,“abcdefg”).groups() 这将返回列表('g',) 我需要它返回('a','b','c','d','e','f','g',) 可能吗?我怎么做 除此之外,以下是解释: re.findall(r"\w","abcdefg") 在正则表达式中,组计数是固定的。在组后面放置一个量词不会增加组计数(假设所有其他组索引都会增加,因为
re.search(“(\w)*”,“abcdefg”).groups
()
这将返回列表('g',)
我需要它返回('a','b','c','d','e','f','g',)
可能吗?我怎么做 除此之外,以下是解释:
re.findall(r"\w","abcdefg")
在正则表达式中,组计数是固定的。在组后面放置一个量词不会增加组计数(假设所有其他组索引都会增加,因为一个量词组多次匹配)
当需要多次匹配复杂的子表达式时,带量词的组是使其原子化的方法。正则表达式引擎除了将最后一个匹配保存到组之外没有其他方法。简而言之:用一个“非武装的”正则表达式无法实现您想要的,您必须找到另一种方法。+1:您不能用一个正则表达式捕获;你必须用另一种方法来做。作为补充:现代的正则表达式实现,比如.NET中的一个,允许你访问除上一个之外的以前出现的组。因此,上述语句并非完全正确,但对于大多数实现仍然适用。请注意,Python有一个regex实现,它还允许访问捕获组的所有匹配项: