如何通过此Perl程序获得正确的输出?

时间:2010-01-20 15:25:24

标签: perl

我的正则表达式有问题。我是 试图提取whileif中的多个条件。我在Windows XP上使用Perl 5.8.6。

@conditions是一个完全包含while循环内容的数组,例如:

while
 (
    (condition A) &&
    (condition B)
 )  

您可以假设@conditions数组包含以上数据:

my perl code sampled:

my $count = 0; 
foreach my $condition (@conditions) { 
    $count++; 
    my ($open,$close) = $condition =~ /( (?: [(] | \s )* ) (.*) /msx; 
    print "$open $count $close"; 
    } 

和我的C代码:

 while
 (
   ( 
    1 condition A &&
    2 condition B
   )&&
   (
    3 condition C
    4 condition D
   )
 )

当我有这样的while循环时,我遇到了问题:

while
 (

     (condition A) &&
     (condition B)
 )  

我想要的输出必须是:

 while
 (

    1 (condition A) &&
    2 (condition B)
 ) 

但它打印有......

while
(
   ( 1 condition A) &&
   ( 2 condition B)

)

任何人都可以帮助我使用正则表达式来获得我想要的输出吗?

1 个答案:

答案 0 :(得分:2)

您有print "$open $count $close";并且您声明您希望该数字位于括号之前。

因此请使用print "$count $open$close";