Как я могу сопоставить определенные вложенные скобки в Perl? - PullRequest
0 голосов
/ 25 января 2010

^\s*[)]*\s*$ и ^\s*[(]*\s*$ соответствуют круглым скобкам ( и ), которые выделены жирным шрифтом. То есть я пытаюсь игнорировать одинарные круглые скобки, а не круглые (условие1):

while
   (    #matches here
     (  #matches here
      (condition1) && (condition2) && 
       condition3 
    ) || 
    (#matches here
      (condition4) || 
       condition5 && 
       (condition6) 
     ) #matches here

  ) #matches here

но если у меня так, это не совпадает:

while
 (( #does not match here
      (condition1) && (condition2) && 
       condition3 
    ) || 
    (
      (condition4) || 
       condition5 && 
       (condition6) 
     ) ) #does not match here

или

while
 ((( #does not match here
      (condition1) && (condition2) && 
       condition3 
    )) || 
    ((  #does not match here
      (condition4) || 
       condition5 && 
       (condition6) 
     ) ) ) #does not match here

Как мне сопоставить все одиночные скобки?

1 Ответ

5 голосов
/ 25 января 2010

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

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