如何匹配Perl中的某些嵌套括号?

时间:2010-01-25 10:43:51

标签: regex perl

^\s*[)]*\s*$^\s*[(]*\s*$匹配粗体括号()。也就是说,我们试图忽略单个而不是(condition1)括号的括号:

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 个答案:

答案 0 :(得分:5)

我个人建议您使用一个简单的堆栈来计算开放和结束括号,而不是跳过正则表达式。