C# MatchCollection抛出计算超时错误

C# MatchCollection抛出计算超时错误,c#,regex,runtime-error,C#,Regex,Runtime Error,我使用这个正则表达式来查找方法。 因此,请为查找方法提供一个优化的正则表达式模式 我已经调试了该项目,它为System.EventArgs EventArgs和 System.Windows.Forms.HelpEventArgs hlpEvent var pattern = @"\b(public|private|internal|protected)\s*" + @"\b(static|virtual|abstract)?\s*[a-zA-Z_]*(?<me

我使用这个正则表达式来查找
方法
。 因此,请为查找
方法
提供一个优化的正则表达式模式

我已经调试了该项目,它为
System.EventArgs EventArgs
System.Windows.Forms.HelpEventArgs hlpEvent

var pattern = @"\b(public|private|internal|protected)\s*" +
              @"\b(static|virtual|abstract)?\s*[a-zA-Z_]*(?<method>\s[a-zA-Z_]+\s*)" + 
              @"\((([a-zA-Z_\[\]\<\>]*\s*[a-zA-Z_]*\s*)[,]?\s*)+\)"; 
var模式=@“\b(公共|私有|内部|保护)\s*+
@“\b(静态|虚拟|抽象)?\s*[a-zA-Z|]*(?\s[a-zA-Z|]+\s*)”+
@“\((([a-zA-Z\[\]\]*\s*[a-zA-Z\]*\s*)[,]?\s*)+\)”;
错误:评估函数“function”超时,需要以不安全的方式中止


这是灾难性的回溯。要修复它,我们需要知道您的模式必须遵循的规则。问题主要在于
@((([a-zA-Z\[\]\]*\s*[a-zA-Z\]*\s*)[,]?\s*)+)“
部分,因为在
+
-量化组中有6个可选的
*
-或
-量化模式,后跟一个强制性的
\)
模式<代码>\s*在整个模式中也是一个问题。最好给出测试代码。与其尝试使用正则表达式实现编译器,我可以建议改用Roslyn编译器平台吗?请参阅示例:@OliverHao在本例中,与.NET regex兼容的在线测试程序将更合适,如regexhero.NET或regexstorm.NET。@WiktorStribiżew能否请您提供正则表达式以匹配不会引发错误的函数