今天在整理代码的时候,发现对输入的正则表达式有要求:至少提供一对括号。但是只是简单提示下,并没有添加规则的地方限制。为了避免不必要的麻烦,就自己实现了一个。

方法如下:
先去除:\( 和 \);再去除:[^()] ;再去除(),并计数

//返回值表示匹配到的括号数,负数代表括号不配对 
private int GetBracketCount(string input) 

   input 
= Regex.Replace(input, @"\\\(|\\\)"""); 
   input 
= Regex.Replace(input, "[^()]"""); 
   
int count = 0
   
int index = input.IndexOf("()"); 
   
while (index >= 0
   

       count
++
       input 
= input.Remove(index, 2); 
       index 
= input.IndexOf("()"); 
    }
 
    
if (input.Length > 0
    

       count 
= count - 2 * count; 
    }
 
    
return count; 
}

 

附:找到的一个匹配括号是否配对的正则表达式:

^[^\(\)]*(((?<o>\()[^\(\)]*)+[^\(\)]*((?<-o>\))[^\(\)]*)+)*(?(o)(?!))$
posted on 2008-11-15 01:11  huadust  阅读(152)  评论(0编辑  收藏  举报