2008_11_15_星期五

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

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

// 返回值表示匹配到的括号数,负数代表括号不配对 
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)( ?! ))$

你可能感兴趣的:(2008)