0

我有一个字符串,其中包含大括号内的表达式列表。我想通过将其拆分为数组来获取详细信息。我试过这样。

#!/usr/bin/perl 
sub main() {
my $string = <STDIN>; 
while ($string =~ /(\((?:(?1)|[^()]*+)++\))|[^()\s]++/g) 
{
print "$&\n" 
}
main();

InPut : (+ (+ 4 3) ( - 3 2) 5)
Output should be : (+ (+ 3 4) ( - 2 3) 5)
(+ 3 4)
( - 2 3) 

我试图将它存储在一个数组中,然后单独评估。但不确定那是正确的方法。

基本上我正在尝试评估如下表达式。

4+3 =7 , 3-2 =1 , and then 7+1+5 = 13
Final output should be 13

任何人都可以帮助我吗?

4

1 回答 1

1

使用以下表达式/(?=(\((?>[^()]+|(?1))*\)))/g

在此处查看实际操作:http ://regex101.com/r/eI7iP5

于 2013-07-20T10:36:43.847 回答