Мое регулярное выражение:
(?:^ *)?(?:\\(*|())[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
и т.д ... но это не так, когда я его использую.
Кто-нибудь знает, как я мог бы изменить это регулярное выражение для правильной группировки логического выражения?