提问人:Router 提问时间:6/23/2022 更新时间:6/23/2022 访问量:94
为什么超出范围的索引不会引发正则表达式 GroupCollection 的异常?
Why doesn't out of range indexes throw an exception for Regex GroupCollection?
问:
通常,如果尝试访问不存在的数组成员,则会收到“IndexOutOfRangeException”。
但是,出于某种原因,我不明白正则表达式 GroupCollection。
例如:
var match = Regex.Match("", "a");
var test = match.Groups[6];
尽管只有 1 个组,但不会引发异常。match
为什么会这样?
答:
2赞
Wiktor Stribiżew
6/23/2022
#1
这是设计使然。
请参阅 GroupCollection
文档:
如果
groupnum
不是集合成员的索引,或者是输入字符串中未匹配的捕获组的索引,则该方法将返回一个 Group 对象,该对象的 Group.Success 属性为 且其属性为 String.Empty。groupnum
false
Group.Value
我加粗了这句话的开头,因为它描述了您当前的场景:正则表达式模式在空字符串中找不到匹配项,匹配项为空,并且没有 ID = 6 的组。a
下一个:与体系结构匹配的类似数据源
评论