多数のキャプチャ グループがある場合、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
にどのグループが一致したかをすばやく見つける方法はありません。これは、大きな正規表現がプログラムによって構築され、反復が非効率的な場合に役立ちます。
明らかな何かが欠けていますか、それとも可能ではありませんか?