为什么指定的组位于组数组的末尾?正则表达式 - 为什么命名组位于组数组的末尾?
模式为例(与有名和无名组):
(?<digit>\d+)\|(?<main>\d+)\|(\d+)\|(?<abc>\d+)\|(\d+)
和文字:
123|456|789|10|11
为什么 “789” 和 “11” 位于阵列的开始?
观看演示systemtextregularexpressions.com
对不起,我的英语:)
为什么指定的组位于组数组的末尾?正则表达式 - 为什么命名组位于组数组的末尾?
模式为例(与有名和无名组):
(?<digit>\d+)\|(?<main>\d+)\|(\d+)\|(?<abc>\d+)\|(\d+)
和文字:
123|456|789|10|11
为什么 “789” 和 “11” 位于阵列的开始?
观看演示systemtextregularexpressions.com
对不起,我的英语:)
嗯......它只是一个实现选择在.NET Framework制作。
的documentation解释算法:
两个无名和命名的捕获组可以按编号进行访问。未命名的组从左至右进行编号,从1开始。(索引0(零)中的捕获组表示匹配作为整体。)命名组从左到右编号,数字开头的数字大于未命名的捕获组数量。
同样不一定适用于其他的味道,比如在PCRE它们出现在无论他们是如何命名或没有图案的顺序分配组号码。
thx。不是很方便:( – GRUNGER 2015-04-01 20:13:28
这两种方法都是有效的IMO,每个正则表达式的实现都必须做出选择。我个人不会混合使用命名组和未命名组,无论如何选择其中一个,这会消除混淆。 – 2015-04-01 20:16:22
0,1,2,digit,main,** ABC **? – GRUNGER 2015-04-01 19:48:31