c # регулярное выражение соответствует четным скобкам в выражении - PullRequest
0 голосов
/ 17 сентября 2011

У меня есть следующие выражения:

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 мне нужно только value и для KNOWN_TOKEN2 мне нужно (value operator (value operator value)).

Я пробовал различные варианты (\([^(]+\)), ноони соответствуют только «самому низкому» набору «парантезов» и, кроме того, они соответствуют дополнительному (т. е. для KNOWN_TOKEN2 они соответствуют дополнительным конечным скобкам).

Кроме того, я нашел несколько подсказок поЯ делаю это в несколько повторяющихся шагов и изменяю исходный текст, но я бы предпочел сделать это в одном регулярном выражении.Есть намеки?

Спасибо!

1 Ответ

0 голосов
/ 17 сентября 2011
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(';');
}

EDITED

...