我有两个正则表达式,用于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
,但我不确定了。在我的实际问题中,我需要做一些比较复杂的事情,而且我需要做六十九次,所以重复这个模式并不理想。
答案 0 :(得分:5)
答案 1 :(得分:2)
来自docs:
如果在Regex.Split表达式中使用捕获括号,则任何捕获的文本都包含在结果字符串数组中。
您的第二个表达式中有一个捕获组。尝试不捕获的parens:
(?<=\G(?:[^,],){2})