我有以下表述:C#正则表达式匹配偶数括号中表达
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))
。
我尝试各种口味的(\([^(]+\))
但他们只匹配“最低”设置“paranthesis”的,此外,它们匹配一个额外的一个(即用于KNOWN_TOKEN2
它们匹配一个额外的结尾括号)。
另外,我在网上发现了一些关于将它做成几个重复步骤并改变原始文本的提示,但我宁愿将它做成一个单一的正则表达式。任何提示?
谢谢!
我,我不是深入到这里正则表达式中使用(我认为他们可以回溯的形式),但理论上的正则表达式(那些等效于有限自动机)不能做这样的事情,我猜如果你为此使用RegEx它可能会变得相当缓慢。想过为此做一个简单的解析器吗? – Carsten
我真的开始这个'备份'的解决方案,但我认为这是一个优雅的解决方案。 – dcg