正则表达式平衡组解决括号表达式的面试问题

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(GetMax(")()(()())("));

            Console.Read();
        }

        static int GetMax(String str)
        {
            Regex regex = new Regex("((?\\()|(?<-open>\\)))*(?(open)(?!))");
            var matches = regex.Matches(str);
            return matches.OfType<Match>().Max(m => m.Length);
        }
    }

当然,使用双层for循环也可以解决,但没有平衡组匹配解决的简单。

你可能感兴趣的:(正则表达式)