PHPでは、次の文字列があります。
$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
";
この文字列からすべての{ option
...}を取得する必要があります(この文字列では合計5つ)。ネストされた角かっこが複数あるものとないものがあります。同じ線上にあるものとそうでないものがあります。
私はすでにこの正規表現を見つけました:
(\{(?>[^{}]+|(?1))*\})
したがって、以下は正常に機能します。
preg_match_all('/(\{(?>[^{}]+|(?1))*\})/imsx', $text, $matches);
中括弧内にないテキストは除外されますが、一致にはblabla
-itemsも含まれます。これは必要ありません。
option
この正規表現を変更して-itemsのみを含める方法はありますか?