5

で使用するための 2 つの正規表現がありますRegex.Split

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

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

string を分割する"A,B,C,D,E,F,G,"と、最初の結果は次のようになります。

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

2番目の結果は次のとおりです。

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

ここで何が起こっているのですか?(X){2}それは常に と同等だと思っていましたがXX、もうわかりません。私の実際の問題では、かなり複雑なことをする必要があり、それを 69 回行う必要があるため、パターンを繰り返すだけでは理想的とは言えません。

4

2 に答える 2

6

のドキュメントからRegex.Split

Regex.Split 式でキャプチャ用の括弧が使用されている場合、キャプチャされたテキストは結果の文字列配列に含まれます。

内部括弧はキャプチャーです。(?:[^,],)代わりに使用してみてください。

于 2013-10-10T02:53:27.490 に答える
2

ドキュメントから:

Regex.Split 式でキャプチャ用の括弧が使用されている場合、キャプチャされたテキストは結果の文字列配列に含まれます。

2 番目の式にキャプチャ グループがあります。キャプチャしない括弧を試してください:

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