在PHP中,我有以下字符串: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?
这听起来像一个文法分析工作。我有一次相关的问题。我很好奇,如果有人能完成这项工作! :) – hek2mgl
可以有多少个嵌套大括号? – Flosculus
[我对另一个问题的回答可能对你有用](http://stackoverflow.com/a/11468459/599857) – Leigh