c#regex捕获

时间:2012-10-18 18:01:46

标签: c# regex capturecollection

我正在匹配包含可选组和非可选组混合的重复组。当我迭代捕获时,捕获集合总是折叠,即它们不为非匹配项插入null元素。

有没有办法保留捕获集合中的匹配顺序,以便将任何省略的可选项插入为null,从而确保捕获集合元素跨组对应?

为了澄清,假设我的重复(父)组匹配了三次,并且在三个匹配中的一个中省略了可选的子组,但是在另外两个组中存在,我最终得到了一个捕获集合。省略的项目,是一个比其他捕获集合少的元素。我怎么知道哪个父组省略了可选项?

我想可以使用捕获集合项的Index属性并检查它是否属于父组的范围,但如果非匹配在捕获集合中返回了null项,则会更容易。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:10)

而不是(pattern)?使用(pattern|)而你应该得到你想要的......