regex / extraction de données dans une chaine
bonjour,
je cherche à extraire de cette chaine...
Code:
{if a=="1"}test2.html{else}test3.html{/if} {assign var="test" value="tttt"} {if a>=3}test3.html{/if} alt="coucou" attr="test" onclick="{literal}location.href='toto.html'{/literal}"
...les blocs suivant à la l'aide d'une regexp Javascript :
Code:
1 2 3
| 1/ {if a=="1"}test2.html{else}test3.html{/if}
2/ {assign var="test" value="tttt"}
3/ {if a>=3}test3.html{/if} |
Je ne veux pas extraire le bloc :
Code:
{literal}location.href=''{/literal}
parce qu'il est encadré par des guillemets onclick="..."
Ces blocs sont des blocs smarty, les règles sont les suivantes :
{tag param}......{/tag}
ou
{tag param}
ou
{tag}
la regexp pourrait ressembler à ça mais marche pas :
Code:
1 2 3 4 5
| var t='{if a=="1"}test2.html{else}test3.html{/if} {assign var="test" value="tttt"} {if a>=3}test3.html{/if} alt="coucou" attr="test" onclick="{literal}location.href=\'toto.html\'{/literal}"';
while ((v = /{[^}]*}/gi.exec(t))!=null){
console.info(v);
} |
J'obtiens la liste de tous les {..} mais pas les blocs smarty comme définit ci-dessus.
pouvez-vous m'aider ?