2016-04-08 39 views
0

我有模板引擎。匹配{if} ... {/ if}块时,内容分裂由{else | elif}条件决定。但是,当内容嵌套{if} ... {/ if}块时,{else | elif}条件算法匹配错误else或elif标签。可能我有这样的内容;preg_match不在特定标签之间

example content

黑线应该可选,但是红线不可选择。

这是我的老匹配模式,但它不能正常工作

/{(else|elif)[\s]*(.*?)[\s]*}/ 

回答

0
preg_match_all("/\{\/if}(.*?)\{if \$test3 \}/ms", $input_lines, $output_array); 
Echo $output_array[1]; 

看到它在行动http://www.phpliveregex.com/p/fhf

(您需要按preg_match_all按钮,它的工作)

+0

是的这个工作,但不正确。例如,当内容“abc {else} xyz”正则表达式不匹配时。所以我想我需要一个“(?!)”修饰符或类似的东西。 – redfox9999

+0

@ redfox9999更新:-) – Andreas

+0

对不起,但仍然无法正常工作。我需要这样的模式。 (不在{if}){(else | elif).....}(不在{/ if}之间) 但我无法写出适当的正则表达式 – redfox9999