如何使用正则表达式匹配左右括号?

例如,我想匹配: var c= 2*(function(a)-function1(function2(a+b*2),3))+4*5;
中的function(a)和function1(function2(a+b*2),3)
主要是想要能够达到让左右括号数量对应的方法。
最新回答
七月别困

2024-04-28 15:27:01

用C#语言的

正则表达式
中的平衡组就可以实现你的要求,完整的程序如下

using System;

using System.Text.RegularExpressions;

namespace MatchApplication{

 class MatchProgram{

  static void Main(string[] args){

   string str="var c= 2*(function(a)-function1(function2(a+b*2),3))+4*5;";

   string pattern = @"(function|function1)\([^()]*(((?'Open'\()[^()]*)+((?'-Open'\))[^()]*)+)*(?(Open)(?!))\)";

   MatchCollection mc=Regex.Matches(str, pattern);

   foreach (Match m in mc){

    Console.WriteLine(m.Groups[0]);

   }

  }

 }

}

﹏小阿蓉er

2024-04-28 16:14:16

这种问题正则太复杂了 一般是写基于栈的算法