当我RegExp
有多个捕获组时,我想知道哪个组进行了捕获(或者至少是第一个/最后一个这样的组,如果有多个)。如果你熟悉 Python,这基本上相当于re.MatchObject.lastgroup
. 一些代码使其更清晰:
var re_captures = new RegExp("(\\d+)|(for)|(\\w+)", "g");
var str = " for me 20 boxes please";
var result;
while ((result = re_captures.exec(str)) !== null) {
console.log(result[0], 'at', result.index, result.slice(1));
}
它打印:
for at 1 [ undefined, 'for', undefined ]
me at 5 [ undefined, undefined, 'me' ]
20 at 8 [ '20', undefined, undefined ]
boxes at 11 [ undefined, undefined, 'boxes' ]
please at 17 [ undefined, undefined, 'please' ]
该result
数组显示了哪些组进行了捕获,但我看不出有什么方法可以快速找出每个给定的匹配项,哪些组匹配,而无需遍历数组。这在以编程方式构建大型正则表达式并且迭代效率低下的情况下很有用。
我错过了一些明显的东西,还是不可能?