Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式-如何从通配符表达式捕获多个组?_Python_Regex_Lexical Analysis - Fatal编程技术网

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") 在正则表达式中,组计数是固定的。在组后面放置一个量词不会增加组计数(假设所有其他组索引都会增加,因为

我有一个Python正则表达式,其中包含一个组,该组可以出现零次或多次,但当我随后检索组列表时,只有最后一个组出现。例如:

re.search(“(\w)*”,“abcdefg”).groups
()

这将返回列表('g',)

我需要它返回('a','b','c','d','e','f','g',)

可能吗?我怎么做

除此之外,以下是解释:

re.findall(r"\w","abcdefg")
在正则表达式中,组计数是固定的。在组后面放置一个量词不会增加组计数(假设所有其他组索引都会增加,因为一个量词组多次匹配)


当需要多次匹配复杂的子表达式时,带量词的组是使其原子化的方法。正则表达式引擎除了将最后一个匹配保存到组之外没有其他方法。简而言之:用一个“非武装的”正则表达式无法实现您想要的,您必须找到另一种方法。

+1:您不能用一个正则表达式捕获;你必须用另一种方法来做。作为补充:现代的正则表达式实现,比如.NET中的一个,允许你访问除上一个之外的以前出现的组。因此,上述语句并非完全正确,但对于大多数实现仍然适用。请注意,Python有一个regex实现,它还允许访问捕获组的所有匹配项: