我有以下表述: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