使用此正则表达式,为什么它只捕获最后一个列表项

时间:2013-03-16 17:09:26

标签: javascript c++ regex

使用正则表达式:

(?:(?:(x),)*)

匹配列表字符串,例如:

X,X,X,X,

我只获得一个捕获组,持有最后一个x。 如何为每个x获取一个捕获组。

正则表达式是一种简化。 X表示长正则表达式

我在C ++,vs11中使用正则表达式(ECMAScript~ = javascript)。

1 个答案:

答案 0 :(得分:3)

这是因为您使用group *量词..

第1组中的第一个x,匹配。它再次匹配x, 覆盖组值。直到最后一场比赛才这样做..

您可以使用(x,) 而不使用 *量词来匹配文字单独


注意

只有 .NET 支持使用capturecollection进行多个组值捕获..即使用x,x,x,x,正则表达式捕获(x,)*