正则表达式,我想在子匹配中返回(n)值

I have the following regex, that I want to extract from a text some template tags with (n) parameter:

\{{2}([\w\-\d]+)([\s:\,]*(?:\[([\w\%]+)\])*)*\}{2}

But the problem is the above regex returns only the last parameter, and I want to catch all parameters. This parameters also can repeat multiple times. I can't see what is wrong. Somebody can help me?

Exemples:

Exemple 1 {{url-builder: [linktitle], [email]}} // Return ['url-builder', 'email']
Exemple 2 {{url-builder: [linktitle]}} // Return ['url-builder', 'linktitle']

Exemple 1 should return ['url-builder', 'link-title', 'email']

To be more specific, I have the follow text

Ao contrário do que se acredita, Lorem Ipsum não é simplesmente um texto randômico. Com mais de 2000 anos, {{url-builder: [linktitle], [email]}} suas raízes podem ser encontradas em uma {{author-name}} obra de literatura latina clássica datada de 45 AC. Richard McClintock, um professor de latim do Hampden-Sydney College na Virginia,

From the above text, I want to catch all tags {{tag}}. But some tags can have parameters {{tag: parameter-1}}, and these parameters can repeat multiple times {{tag: parameter-1: parameter-1}}. I'm trying to catch a single array with the tag and all parameters.

Yes, capturing groups usually store only the last occurrence of their pattern. You can wrap all parameters in one group to get them:

\{\{([\w\-]+):\s*((?:\[[\w\%]+\][,\s]*)*)\}\}
    ^       ^    ^                      ^

Then afterwards split that by /[,\s]+/ to get a list.