c#正则表达式匹配表达式中的偶数括号

时间:2011-09-17 08:57:19

标签: c# expression parentheses

我有以下表达式:

KNOWN_TOKEN=((value operator value) operator value) 
            operator OTHER_KNOWN_TOKEN=value 
            operator KNOWN_TOKEN2=(value operator (value operator value));

我正在尝试找到一个c#正则表达式,以便在打开时用同样匹配的闭括号返回整个表达式。这意味着,对于KNOWN_TOKEN,我只需要((value operator value) operator value)OTHER_KNOWN_TOKEN我只需要valueKNOWN_TOKEN2我需要(value operator (value operator value))

我尝试了(\([^(]+\))的各种风格,但它们只匹配'最低'的'paranthesis'组合,此外,它们匹配额外的一个(即KNOWN_TOKEN2它们匹配额外的结束括号)

另外,我已经在网上找到了一些提示,将其分成几个重复的步骤并更改原始文本,但我宁愿将其添加到单个正则表达式中。任何提示?

谢谢!

1 个答案:

答案 0 :(得分:0)

Regex reg = new Regex(@"(?<token>[^=]*)=(?<value>\(*value.*)");
foreach (Match item in reg.Matches(""))
{
      var token= item.Groups["token"].Value.Trim();
      var val= item.Groups["value"].Value.Trim(';');
}

<强> EDITED