Grupo (sub) repetitivo de regexp JavaScript

É possível retornar todos os subgrupos repetidos e correspondentes de uma única chamada com uma expressão regular?

Por exemplo, eu tenho uma string como:

{{token id=foo1 class=foo2 attr1=foo3}}

Onde o número de atributos (ou seja,id, class, attr1) são indefinidos e podem serkey=value par.

Por exemplo, no momento, tenho o seguinteregexp e saída

var pattern = /\{{([\w\.]+)(?:\s+(\w+)=(?:("(?:[^"]*)")|([\w\.]+)))*\}\}/;
var str = '{{token arg=1 id=2 class=3}}';

var matches = str.match(pattern);
// -> ["{{token arg=1 id=2 class=3}}", "token", "class", undefined, "3"]

Parece que ele corresponde apenas ao último grupo; Existe alguma maneira de obter todos os outros "atributos" (arg eid)?

Nota: o exemplo ilustra a correspondência em uma única sequência, mas o padrão pesquisado deve estar localizado em uma sequência muito maior, possivelmente contendo muitas correspondências. Assim,^ e$ não pode ser usado.

questionAnswers(2)

yourAnswerToTheQuestion