在 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?