爲什麼指定的組位於組數組的末尾?正則表達式 - 爲什麼命名組位於組數組的末尾?
模式爲例(與有名和無名組):
(?<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