c# 正则表达式捕获

Posted

技术标签:

【中文标题】c# 正则表达式捕获【英文标题】:c# regex captures 【发布时间】:2012-10-18 18:01:46 【问题描述】:

我正在匹配一个包含可选组和非可选组混合的重复组。当我遍历捕获时,捕获集合总是折叠的,即它们不会为不匹配的项目插入空元素。

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

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

我想可以使用捕获集合项的 Index 属性并检查它是否在父组的范围内,但是如果不匹配项在捕获集合中返回 null 项会更容易。有没有办法做到这一点?

【问题讨论】:

你能提供一些示例代码来演示吗? 【参考方案1】:

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

【讨论】:

以上是关于c# 正则表达式捕获的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 c# 获取捕获组的子组

C# 正则表达式捕获组不起作用

C# - 正则表达式匹配模式、替换和捕获行号 [来自 Txt 文件]

c#正则表达式捕获两个字符串之间的字符串[重复]

正则表达式 c# 可选组 - 应该贪婪吗?

.NET 正则表达式中的“组”和“捕获”有啥区别?