在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