En PHP, j'ai la chaîne suivante :
$text = "test 1
{blabla:database{test}}
{blabla:testing}
{option:first{A}.Value}{blabla}{option:second{B}.Value}
{option:third{C}.Value}{option:fourth{D}}
{option:fifth}
test 2
";
J'ai besoin d'obtenir tous les { option
...} de cette chaîne (5 au total dans cette chaîne). Certains ont plusieurs parenthèses imbriquées, d'autres non. Certains sont sur la même ligne, d'autres non.
J'ai déjà trouvé cette regex :
(\{(?>[^{}]+|(?1))*\})
Le texte suivant fonctionne bien :
preg_match_all('/(\{(?>[^{}]+|(?1))*\})/imsx', $text, $matches);
Le texte qui ne se trouve pas à l'intérieur des accolades est filtré, mais les correspondances incluent également les éléments suivants blabla
-dont je n'ai pas besoin.
Existe-t-il un moyen de modifier cette expression pour qu'elle n'inclue que les éléments suivants option
-des articles ?