Как я могу получить правильный вывод с помощью этой программы Perl? - PullRequest
0 голосов
/ 20 января 2010

У меня проблема с регулярным выражением. я пытаясь извлечь несколько условий внутри while и if. Я использую Perl 5.8.6 в Windows XP.

@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 Ответ

2 голосов
/ 20 января 2010

У вас есть print "$open $count $close";, и вы заявляете, что хотите, чтобы число предшествовало скобкам.

Так что используйте print "$count $open$close";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...