首页 > 解决方案 > 如何根据 BODMAS 规则获取括号内的值

问题描述

我尝试并坚持这个仅适用于一对括号的公式:

preg_match('#\((.*?)\)#', $text, $match);
print $match[1];

我想要做的是在第一个右括号之前的最后一个左括号之后解析文本。

例如,我有这样的等式:

1+(2+(3+(5-6)))+(7-8)

将被解析的文本是“5-6”。

标签: regexparsingpreg-match

解决方案


匹配(> 除(或之外的任何内容)>)

$text = '1+(2+(3+(5-6)))+(7-8)';
preg_match('/\(([^\(\)]+)\)/', $text, $match);
var_dump($match);

推荐阅读