当前位置: 首页 > 知识库问答 >
问题:

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

越俊驰
2023-03-14

在括号()之间获取文本的Reg表达式,我尝试过,但我没有得到RegEx。对于这个例子

Regex。匹配(脚本,@“\(.*?\)”)。值

例子:-

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

Output =>

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

2) f,g

共有1个答案

牧信厚
2023-03-14

...NET允许在正则表达式中递归。请参见平衡组定义

var input = @"add(mul(a,add(b,c)),d) + e - sub(f,g)";

var regex = new Regex(@"
    \(                    # Match (
    (
        [^()]+            # all chars except ()
        | (?<Level>\()    # or if ( then Level += 1
        | (?<-Level>\))   # or if ) then Level -= 1
    )+                    # Repeat (to go from inside to outside)
    (?(Level)(?!))        # zero-width negative lookahead assertion
    \)                    # Match )",
    RegexOptions.IgnorePatternWhitespace);

foreach (Match c in regex.Matches(input))
{
    Console.WriteLine(c.Value.Trim('(', ')'));
}
 类似资料: