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

本文关键字:正则表达式 表达式 | 更新日期: 2023-09-27 18:08:57

我有以下表达式:

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我只需要value,对于KNOWN_TOKEN2我只需要(value operator (value operator value))

我尝试了('([^(]+'))的各种口味,但它们只匹配"最低"的"括号"集合,此外,它们匹配额外的一个(即KNOWN_TOKEN2它们匹配额外的结束括号)。

另外,我在网上找到了一些提示,把它分成几个重复的步骤并改变原始文本,但我宁愿把它变成一个单一的regexp。有提示吗?

谢谢!

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

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(';');
}