Лучший способ прочитать сложное выражение - PullRequest
0 голосов
/ 13 октября 2019

Скажем, выражение имеет следующий вид:

((a  ~eq~ 'Value A' ~and~ b ~eq~ 'Value (b)') ~or~ (c ~eq~ 'Value C')) ~and~ d ~eq~ 123

Каков наилучший способ получить здесь группы выражений, например:

  • 1-ые внутренние группы:

    • A = (a ~eq~ 'Value A' ~and~ b ~eq~ 'Value (b)')
    • B = (c ~eq~ 'Value C')
  • 2-я внутренняя группа:

    • C = (A ~or~ B)
  • Внешняя группа:

    • C ~and~ d ~eq~ 123

ПокаЯ попробовал следующее регулярное выражение:

  • Для скобок с одним заключением: \([^()]*\)
  • Для скобок с двойным заключением: \(([^()]*|\([^()]*\))*\)

Чтобы получитьвыражения внутри скобок и обрабатывают его, но регулярное выражение не выполняется, когда у операнда есть внутренняя скобка (b ~eq~ 'Value (b)').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...