通常,如果您试图访问一个不存在的数组成员,您会得到一个"IndexOutOfRangeException".

然而,出于某种原因,我没有为Regex-GroupCollection获得这一点.

例如:

    var match = Regex.Match("", "a");
    var test = match.Groups[6];

不引发异常,尽管match只有一个组.

为什么会发生这种情况?

推荐答案

这是故意的.

参见GroupCollection documentation:

If 103 is not the index of a member of the collection,或者如果groupnum是输入字符串中未匹配的捕获组的索引,则该方法返回Group对象,其Group.Success属性为falseGroup.Value属性为String.Empty.

我将句子的开头加粗,因为它描述了您当前的场景:a regex模式在空字符串中找不到匹配项,匹配项为空,并且没有ID=6的组.

Csharp相关问答推荐

解析需要HttpClient和字符串的服务

始终保留数组中的最后N个值,丢弃最老的

SignalR客户端不会打印队列位置'

如果存在对CodeAnalysis.CSharp的引用,则不能引用netStandard2.0库

Blazor. NET 8—阶段启动配置文件不启动网站VS2022

Blazor Foreach仅渲染最后一种 colored颜色

为什么任务需要在内部使用ManualResetEventSlim?

如何使用新的Microsoft.IdentityModel.JsonWebToken创建JwtSecurityToken?

如何使用C#中的主构造函数功能使用多个构造函数?

BlockingCollection T引发意外InvalidOperationException

DateTime ToString()未以指定格式打印

如果是,我怎么才能让这个加75,如果不是,我怎么才能减go 100?

记录类型';==运算符是否与实现IEquatable<;T&>;的类中的';equals&>方法执行等价比较?

如何在C#中从MongoDB IPipelineStageDefinition中获取聚合命令的字段/选项?

忽略Visual Studio代码中的StyleCop规则

.NET文档对继承的困惑

如何将行添加到DataGrid以立即显示它?

CsvHelper在第二次迭代时抛出System.ObjectDisposedException

MudBlazor MudTabs-->;选项卡内容高度

System.Net.Http.HttpClient返回错误&Quot;Err:缺少UA30&Quot;