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。有提示吗?
谢谢!
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(';');
}