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.