为什么命名组位于组数组的末尾?
模式例如(带有命名组和未命名组):
(?<digit>\d+)\|(?<main>\d+)\|(\d+)\|(?<abc>\d+)\|(\d+)
和文字:
123|456|789|10|11
为什么“789”和“11”位于数组的开头?
请参阅演示systemtextregularexpressions.com
对不起我的英文:)
答案 0 :(得分:1)
嗯......它只是.NET Framework中的一个实现选择。
documentation解释了算法:
可以按编号访问未命名和已命名的捕获组。未命名的组从1开始从左到右编号。(索引0中的捕获组(零)表示整个匹配。)命名组然后从左到右编号,从一个更大的数字开始而不是未命名的捕获组的数量。
同样不一定适用于其他风格,例如PCRE按照它们出现在模式中的顺序分配组号,无论它们是否被命名。