C#正则表达式捕获

5
我正在匹配一个重复组,其中包含可选和非可选组合。当我迭代捕获时,捕获集合总是被折叠的,即它们不会为未匹配项插入空元素。
有没有办法保留捕获集合中匹配项的顺序,使得任何省略的可选项都被插入为null,从而确保跨组的捕获集合元素相对应?
为了澄清,假设我的重复(父)组被匹配三次,在其中一次匹配中省略了一个可选的子组,但在其他两个组中存在该子组,则我得到的子组的捕获集合比其他捕获集合少一个元素。我如何知道哪个父组省略了可选项?
我想这可能使用捕获集合项的Index属性,并检查它是否在父组的范围内来实现,但如果非匹配项返回捕获集合中的null项将更容易。有什么方法可以实现这一点吗?

你能提供一些示例代码来演示吗? - PinnyM
1个回答

10

不要使用 (pattern)?,而是使用 (pattern|),这样你就应该得到你想要的结果...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接