奇数正则表达式行为 - 仅匹配第一个和最后一个捕获组

baz*_*lic 7 c# regex perl capture

我正在尝试编写一个与逗号分隔的单词列表匹配并捕获所有单词的正则表达式.此行应匹配   apple , banana ,orange,peanut 和捕获应该是apple,banana,orange,peanut.要做到这一点,我使用以下正则表达式:

^\s*([a-z_]\w*)(?:\s*,\s*([a-z_]\w*))*\s*$
Run Code Online (Sandbox Code Playgroud)

它成功地匹配字符串,但突然间只applepeanut被捕获.在C#和Perl中都可以看到这种行为.因此,我假设我遗漏了有关正则表达式匹配如何工作的事情.有任何想法吗?:)

Raw*_*ing 4

给出的值match.Groups[2].Value只是第二组捕获的最后一个值。

要查找所有值,请查看match.Groups[2].Captures[i].Value本例中i0到 的范围2。(以及match.Groups[1].Value第一组。)

(问题+1,我今天学到了一些东西!)