Регулярное выражение для логического выражения почти работает - PullRequest
0 голосов
/ 19 сентября 2018

Мое регулярное выражение:

(?:^ *)?(?:\\(*|())[0-9](?: +(?:AND|OR) +(?:\\(|[0-9]))?(?: *\\)|\\1)

И я пытаюсь использовать это в качестве тестовой строки:

1 AND 2 OR (3 AND 4 OR (2 AND 1))

Если я заменяю все найденные совпадения, я получаю 1 OR (1 OR 1), когда конечная строка должна быть просто 1 (заменяя каждое совпадение на 1).

Я думаю, что это часть + (?: \ (| [0-9])).Регулярное выражение, кажется, игнорирует случаи number JOIN (number

Я извлек это регулярное выражение из второго ответа на этот вопрос

И в комментариях говорится, что он должен находить ситуации3 AND (1 и т.д ... но это не так, когда я его использую.

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

...