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 に答える