0

我有以下表达式:

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

我正在尝试找到 ac# 正则表达式,以便在打开它们时返回带有同样匹配的右括号的整个表达式。这意味着,因为KNOWN_TOKEN我只需要((value operator value) operator value),因为OTHER_KNOWN_TOKEN我只需要valueKNOWN_TOKEN2我需要(value operator (value operator value))

我尝试了各种口味,(\([^(]+\))但它们只匹配“最低”组的“括号”,此外,它们匹配一个额外的(即因为KNOWN_TOKEN2它们匹配一个额外的结束括号)。

另外,我在网上找到了一些关于将其分为几个重复步骤并更改原始文本的提示,但我宁愿将其转换为一个正则表达式。有什么提示吗?

谢谢!

4

1 回答 1

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

已编辑

于 2011-09-17T09:28:24.327 回答