我有以下正则表达式,我想从文本中提取一些带有(n)参数的模板标签:
\{{2}([\w\-\d]+)([\s:\,]*(?:\[([\w\%]+)\])*)*\}{2}
但问题是上面的正则表达式只返回最后一个参数,我想捕获所有参数。此参数也可以重复多次。我看不出有什么问题。有人可以帮帮我吗?
Exemples:
Exemple 1 {{url-builder: [linktitle], [email]}} // Return ['url-builder', 'email']
Exemple 2 {{url-builder: [linktitle]}} // Return ['url-builder', 'linktitle']
例子1应该返回['url-builder','link-title','email']
更具体地说,我有以下文字
Aocontráriodoque se acredita,LoremIpsumnãoésimplesmenteumtextorandômico。 Com mais de 2000 anos, {{url-builder:[linktitle],[email]}} suasraízespodemser encontradas em uma {{author-name}} obra de literaturalatinaclássicaartadade 45 AC。 Richard McClintock,教授de latim do Hampden-Sydney College,弗吉尼亚州,
从上面的文字中,我想要抓住所有标签{{tag}}。但是某些标记可以包含参数{{tag:parameter-1}},这些参数可以重复多次{{tag:parameter-1:parameter-1}}。我正在尝试使用标记和所有参数捕获单个数组。
答案 0 :(得分:0)
是的,捕获组通常只存储其模式的最后一次出现。您可以将所有参数包装在一个组中以获取它们:
\{\{([\w\-]+):\s*((?:\[[\w\%]+\][,\s]*)*)\}\}
^ ^ ^ ^
然后通过/[,\s]+/
将其拆分以获得列表。