C# 如何获取嵌套括号之间的文本?

C# 如何获取嵌套括号之间的文本?,c#,regex,c#-4.0,C#,Regex,C# 4.0,用于获取括号()之间的文本的Reg表达式,我已经尝试过了,但是没有得到正则表达式。例如 Regex.Match(脚本,@“\(.*?\)”).Value 例如:- add(mul(a,add(b,c)),d) + e - sub(f,g) Output => 1) mul(a,add(b,c)),d 2) f,g .NET允许在正则表达式中进行递归。看 var-input=@“添加(mul(a,添加(b,c)),d)+e-sub(f,g)”; var regex=新的regex(@

用于获取括号()之间的文本的Reg表达式,我已经尝试过了,但是没有得到正则表达式。例如

Regex.Match(脚本,@“\(.*?\)”).Value

例如:-

add(mul(a,add(b,c)),d) + e - sub(f,g)

Output =>

1) mul(a,add(b,c)),d

2) f,g

.NET允许在正则表达式中进行递归。看

var-input=@“添加(mul(a,添加(b,c)),d)+e-sub(f,g)”;
var regex=新的regex(@“
\(#匹配(
(
[^()]+#除()
|(?\()#或如果(那么级别+=1
|(?\)#或if)则级别-=1
)+#重复(从内到外)
(?(级别)(?!)#零宽度负前瞻断言
\)"匹配",,
RegexOptions.ignorepattern(空格);
foreach(正则表达式中的匹配c.Matches(输入))
{
Console.WriteLine(c.Value.Trim(“(”,“)”);
}

如果需要处理嵌套括号,则应使用解析器而不是正则表达式。@Lee:Hi。。lee,你能给我举个例子吗?在这种情况下,你可以在每次匹配中递归调用该正则表达式,直到没有匹配为止。你需要使用平衡组,@sln他试图匹配“外部”括号中的内容。在PCRE中,您可以执行以下操作!回答得很好!称之为递归似乎有误导性。它只是使用一堆捕获来跟踪嵌套深度。尝试使用您的正则表达式并将其放在这里:它给出了一个“不完整的组结构”错误。我不明白为什么。有什么想法吗?@jsirr13 regex101.com目前不支持.NET regex引擎。使用linqpad或控制台应用程序。