5

我有两个正则表达式,用于Regex.Split

(?<=\G[^,],[^,],)

(?<=\G([^,],){2})

拆分字符串"A,B,C,D,E,F,G,"时,第一个结果是:

A,B, 
C,D, 
E,F, 
G, 

第二个结果是:

A,B, 
A, 
C,D, 
C, 
E,F, 
E, 
G, 

这里发生了什么?我认为这(X){2}总是等同于XX,但我不确定了。在我的实际问题中,我需要做一些更复杂的事情,我需要做六十九次,所以仅仅重复这个模式并不理想。

4

2 回答 2

6

从文档中Regex.Split

如果在 Regex.Split 表达式中使用捕获括号,则任何捕获的文本都将包含在结果字符串数组中。

内部括号正在捕获。尝试(?:[^,],)改用。

于 2013-10-10T02:53:27.490 回答
2

来自文档

如果在 Regex.Split 表达式中使用捕获括号,则任何捕获的文本都将包含在结果字符串数组中。

您的第二个表达式中有一个捕获组。尝试非捕获括号:

(?<=\G(?:[^,],){2})
于 2013-10-10T02:54:08.223 回答